transform.Rotate (0f, 180f, 0f);вращает 2D спрайт, но не это дети - PullRequest
0 голосов
/ 16 апреля 2019

Я пытаюсь добиться стрельбы из 2D-плеера, прикрепил «точку возрождения» и сделал ее потомком игрока, когда я пытаюсь перевернуть спрайт, он работает, но он не переворачивает «точку возрождения» поэтому, когда я поворачиваю налево, моя «точка возрождения» все еще смотрит вправо, поэтому, когда я стреляю, пули направляются влево, а не вправо.

Полный скрипт:

public class PlayerController : MonoBehaviour
{  
    void FixedUpdate()
    {
        RaycastHit2D hit = Physics2D.BoxCast(this.transform.position, new Vector2(0.4f, 0.1f), 0f, Vector2.down, groundCheckRadius, groundMask); //using this for a bigger and more accurate ground check
        isTouchingGround = (hit.collider != null) ? true : false;

        movementInput = Input.GetAxis("Horizontal");

        CheckIfStuck(); //Checks if Mario is trying to walk into the wall and get stuck

        if (!isDead)
        {
            if ((playerRigidbody2D.velocity.x > 0 && !isFacingRight) || (playerRigidbody2D.velocity.x < 0 && isFacingRight))
            {
                playerAnimator.SetBool("turning", true);
            }
            else
            {
                playerAnimator.SetBool("turning", false);
            }

            float movementForceMultiplier = Mathf.Max(maxHorizontalSpeed - Mathf.Abs(playerRigidbody2D.velocity.x), 1);

            playerRigidbody2D.AddForce(new Vector2(movementInput * movementForce * movementForceMultiplier, 0));

            playerRigidbody2D.velocity = new Vector2(Mathf.Clamp(playerRigidbody2D.velocity.x, -maxHorizontalSpeed, maxHorizontalSpeed), Mathf.Clamp(playerRigidbody2D.velocity.y, -maxVerticalSpeed, maxVerticalSpeed));

            if (Input.GetKeyDown(KeyCode.Space))
            {
                if (isTouchingGround)
                {
                    //Play Jump sound
                    if (!poweredUp)
                        audioSource.PlayOneShot(smallJumpSound);
                    else
                        audioSource.PlayOneShot(bigJumpSound);

                    isJumping = true;
                    playerRigidbody2D.velocity = new Vector2(playerRigidbody2D.velocity.x, jumpVelocity);
                    jumpTimeCounter = jumpTime;
                }
            }

            if (jumpTimeCounter > 0 && isJumping)
                if (Input.GetKey(KeyCode.Space))
                {
                    jumpTimeCounter -= Time.deltaTime;
                    {
                        playerRigidbody2D.velocity = new Vector2(playerRigidbody2D.velocity.x, jumpVelocity);
                    }
                }

            if (Input.GetKeyUp(KeyCode.Space))
            {
                isJumping = false;
                jumpTimeCounter = 0;
            }

            playerAnimator.SetFloat("movementSpeed", Mathf.Abs(playerRigidbody2D.velocity.x));
            playerAnimator.SetBool("touchingGround", isTouchingGround);
        }

        if (movementInput > 0 && !isFacingRight)
        {
            FlipSprite();
        }
        else if (movementInput < 0 && isFacingRight)
        {
            FlipSprite();
        }

    }

    void FlipSprite()
    {
        isFacingRight = !isFacingRight;
        //Vector3 tempScale = transform.localScale;
        //tempScale.x *= -1;
        //transform.localScale = tempScale;
        transform.Rotate(0f, 180f, 0f);
    }
}

Флип метод:

void FlipSprite()
    {
        isFacingRight = !isFacingRight;
        //Vector3 tempScale = transform.localScale;
        //tempScale.x *= -1;
        //transform.localScale = tempScale;
        transform.Rotate(0f, 180f, 0f);
    }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...