Я хочу сделать космическую игру с 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);
}
}