3d объект игрока Unity движется в том же направлении - PullRequest
0 голосов
/ 04 апреля 2020

У меня проблема, когда игрок движется в направлении, но анимация персонажа остается неизменной. Поэтому, если я нажму клавишу «w», игрок начнет работать вперед, анимация будет работать. Но когда я нажимаю «s» для движения назад, персонаж не поворачивается вокруг в направлении, которое он просто перемещает / скользит назад, когда персонаж направлен вперед, без анимации. Пожалуйста, помогите !!

public class Player : MonoBehaviour {

        private Animator anim;
        private CharacterController controller;

        public float speed = 600.0f;
        public float turnSpeed = 400.0f;
        private Vector3 moveDirection = Vector3.zero;
        public float gravity = 20.0f;
        private Vector3 curLoc;

    void Start () {
            controller = GetComponent <CharacterController>();
            anim = gameObject.GetComponentInChildren<Animator>();
        }

        void Update (){
            if (Input.GetKey ("w")) {
                anim.SetInteger ("AnimationPar", 1);
            }  else {
                anim.SetInteger ("AnimationPar", 0);
            }
        if (Input.GetKey("s"))
        {
            anim.SetInteger("Condition", 1);
        }
        else
        {
            anim.SetInteger("Condition", 0);
        }

        if (controller.isGrounded){
                moveDirection = transform.forward * Input.GetAxis("Vertical") * speed;
            }

            float turn = Input.GetAxis("Horizontal");
            transform.Rotate(0, turn * turnSpeed * Time.deltaTime, 0);
            controller.Move(moveDirection * Time.deltaTime);
            moveDirection.y -= gravity * Time.deltaTime;
        if (Input.GetKey(KeyCode.S))
        {

        }
        }
}

1 Ответ

0 голосов
/ 07 апреля 2020

Вам нужно показать Animator, как анимации воспроизводятся и переходят. Просто откройте аниматор во время игры и проверьте, играет ли анимация там, где проходит параметр «Condition». Проверьте анимацию переходов тоже. Кроме того, я бы предложил вам изменить значение «AnimationPar» на 0 при нажатии «s».

 if (Input.GetKey("s"))
        {
            anim.SetInteger ("AnimationPar", 0);
            anim.SetInteger("Condition", 1);
        }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...