как я могу немного повернуться и вернуться и почему мой объект вибрирует? - PullRequest
0 голосов
/ 03 августа 2020

Я хочу сделать космическую игру с 3 линиями, и когда космический корабль переходит на другую полосу, он должен немного повернуться в сторону и go вернуться в нормальное положение. Кроме того, он "вибрирует", потому что координата x равна колеблется с небольшим интервалом. как я могу это исправить?

вот мой код.

public class NewMovement : MonoBehaviour
{
    private const float LANE_DISTANCE = 5f;
    
    //Movement
    private CharacterController controller;
    private float verticalVelocity;
    private float speed = 7f;
    private int desiredLane = 1; // 0 = Left, 1 = Middle, 3 = Right

    // Start is called before the first frame update
    void Start()
    {
        controller = GetComponent<CharacterController>();
    }

    // Update is called once per frame
    void Update()
    {
        //Gather the input on which lane we should be
        if(Input.GetKeyDown(KeyCode.LeftArrow))
            MoveLane(false);
       
            if (Input.GetKeyDown(KeyCode.RightArrow))
            MoveLane(true);
            
        // Calculate where we should be in the future
        Vector3 targetPosition = transform.position.z * Vector3.forward;
        if (desiredLane == 0)
            targetPosition += Vector3.left * LANE_DISTANCE;
        else if (desiredLane == 2)
            targetPosition += Vector3.right * LANE_DISTANCE;

        // Let's calculate our move delta
        Vector3 moveVector = Vector3.zero;
        moveVector.x = (targetPosition - transform.position).normalized.x * speed;
        moveVector.z = speed;

        //Move the Ship
        controller.Move(moveVector * Time.deltaTime);              
    }

    private void MoveLane(bool goingRight)
    {
        desiredLane += (goingRight) ? 1 : -1;
        desiredLane = Mathf.Clamp(desiredLane, 0, 2);
    }

}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...