Я работаю над небольшим экспериментальным проектом в Unity. У меня есть 2d спрайт, который движется вперед со скоростью, но я хочу, чтобы он поворачивался влево или вправо по широкой дуге и продолжал двигаться в этом направлении при нажатии клавиши.
- Я пытался настроить его угловую скорость, чтобы получить желаемый эффект. Выглядит неестественно, и он не перестанет вращаться.
- Пробовал Лерпинг. Выглядит также неестественно.
Фрагмент кода 1:
bool forward = true;
Vector3 movement;
void FixedUpdate()
{
if (forward)
{
//Moves forward
movement = new Vector3(0.0f, 0.1f, 0.0f);
rb.velocity = movement * speed;
}
if (Input.GetKeyDown(KeyCode.LeftArrow))
{
forward = false;
movement = new Vector3(-0.05f, 0.05f, 0.0f);
rb.velocity = movement * speed;
rb.angularVelocity = 30;
}
if (transform.rotation.z == 90)
{
movement = new Vector3(-0.1f, 0.0f, 0.0f);
rb.velocity = movement * speed;
rb.angularVelocity = 0;
}
}
Фрагмент кода 2:
void Update(){
if (Input.GetKeyDown(KeyCode.LeftArrow))
{
Vector3 target = transform.position + new Vector3(-0.5f, 0.5f, 0);
transform.position
=Vector3.Lerp(transform.position,target,Time.deltaTime);
transform.eulerAngles = Vector3.Lerp(transform.rotation.eulerAngles,
new Vector3(0, 0, 90), Time.deltaTime);
}
}
Может ли кто-нибудь указать мне правильное направление, как на самом деле правильно реализовать это?