Как переместить вращающийся нож (RigidBody2D) по диагонали? - PullRequest
1 голос
/ 27 февраля 2020

Я новичок в Unity и до сих пор наслаждаюсь своим путешествием. Прямо сейчас я выполнил постоянное вращение своего ножа в диапазоне [-30; 30] градусов. Однако после того, как пользователь нажмет любую клавишу, мой нож должен быстро двигаться в направлении, в котором он в данный момент смотрит .

Как мне добиться следующего поведения? Я пробовал addForce, меняя скорость, но безрезультатно ... Возможно, это даже невозможно сделать?

enter image description here

Здесь мой нож направлен в левый угол и я бы хотел просто очень быстро двигаться в этом направлении . Никаких необычных эффектов:)

enter image description here

Вот исходное положение ножа.

Вот исходный код:

public void HandleRotation()
{
    if (transform.rotation.z >= 0.3f)
    {
        right = false;
    }
    else if (transform.rotation.z <= -0.3f)
    {
        right = true;
    }

    if (right)
    {
        begin = begin + 0.05f;
    }
    else
    {
        begin = begin - 0.05f;
    }

    var tiltAroundZ = begin * tiltAngle;
    var target = Quaternion.Euler (0, 0, tiltAroundZ);
    transform.rotation = Quaternion.Slerp(transform.rotation, target, Time.deltaTime * smooth);

}

1 Ответ

1 голос
/ 27 февраля 2020

Перевести (transform.forward ())? Если прямая является неправильной осью, вы можете попытаться повернуть вверх или вправо.

Также должна быть версия метода Translate, включающая параметр пробела, в этом случае вместо пробела вы должны использовать Space.Self. Мир, в котором он в настоящее время по умолчанию.

...