Нормально ли движение персонажа с изменением преобразования напрямую и с использованием контроллера персонажа? - PullRequest
0 голосов
/ 09 июля 2020

Я новичок, поэтому наберитесь терпения, если этот вопрос не имеет смысла, укажите c, et c. Спасибо! Программирование по-прежнему для меня - абстрактная вещь. способ перемещения персонажа по дорожкам, поэтому я попробовал решение, в котором я перемещаю его с компонентом преобразования в конце Lerping x values.

Мой вопрос: хорошее ли это решение. Может ли это вызвать проблемы с двигателем?

\\\
  void Start()
    {
        myTransform = GetComponent<Transform>();
        characterController = GetComponent<CharacterController>();
        input = GetComponent<SimpleInput>();
        moveStep = myTransform.position;
    }

    // Update is called once per frame
    void Update()
    {
        
        

        if (characterController.isGrounded)
        {
            yVelocity = -1f;

            if (Input.GetKeyDown(KeyCode.Space))
            {
                Jump();
            }

            SelectTrack();
            xVelocity = Mathf.Lerp(transform.position.x, currentTrack * TrackWidth, 0.5f);
           


        }

        else
        {
            yVelocity += -gravity * Time.deltaTime;
            yVelocity = Mathf.Clamp(yVelocity, -gravity, JumpForce);
        }
        

        

        
        
        moveStep.y = yVelocity;
        characterController.Move(moveStep * Time.deltaTime);

        transform.position = new Vector3(xVelocity, transform.position.y, transform.position.z);
        //myTransform.position = moveStep;
    }

    void SelectTrack()
    {


        if (Input.GetKeyDown(KeyCode.A))
        {
            currentTrack -=1;
        }
        if (Input.GetKeyDown(KeyCode.D))
        {
            currentTrack += 1;
        }
        currentTrack = Mathf.Clamp(currentTrack, -1, 1);
    }

    void Jump()
    {
        yVelocity = JumpForce;
    }
}
\\\

1 Ответ

0 голосов
/ 09 июля 2020

Насколько мне известно, есть два способа перемещения персонажей, как и вы: изменение преобразования или использование твердого тела, которое подразумевает силы. Смешивание этих двух методов не является хорошей практикой, поскольку силовая система может стать нестабильной. Однако на контроллер персонажа не действуют силы, поэтому, если вы постоянно взаимодействуете с преобразованием, у вас не должно возникнуть проблем. Более того, я вижу, вы пытаетесь имитировать гравитацию, возможно, использование твердого тела и сил упростит задачу и даст лучшие результаты.

Взгляните. https://docs.unity3d.com/es/current/Manual/class-Rigidbody.html https://docs.unity3d.com/ScriptReference/CharacterController.html

...