судно перемещается на оси z при попытке наклонить его во время поворота? - PullRequest
0 голосов
/ 24 июня 2018

Я делаю 2.5D-игру в единстве, которая посвящена космическому кораблю, путешествующему в пространстве, больше похожему на традиционные игры космического корабля.

Я хочу, чтобы мой космический корабль немного наклонился, когда игрок поворачивается, как самолеты, вот такплоскость поворачивается:

LIKE THIS PLANE IS TURNING

Вот как выглядит мой экранный корабль, принимая поворот:

This is what my screen ship looks while taking a turn

Я хочу, чтобыНаклоните немного, это мой код момента прямо сейчас

    void Turn()
    {
        float RotationCount = Input.GetAxis("Horizontal");
        float TurnShip = turnSpeed * Time.deltaTime * Input.GetAxis("Horizontal");
        if (Input.GetAxis("Horizontal") < 0)
            ForwardTransform.Rotate(0, TurnShip,10*Time.deltatime)
        else if (Input.GetAxis("Horizontal") > 0)
            ForwardTransform.Rotate(0, TurnShip,-10*Time.deltatime);


        //if (RotationCount < 0)
        //    myT.Rotate(0, TurnShip, 9);
        //else if (RotationCount > 0)
        //    myT.Rotate(0, TurnShip, -9);
    }

Это скрипт вращения, а ниже - скрипт thurst

    void Thrust()
    {

        if (Input.GetAxis("Vertical") > 0.75f)
        {
            V = Input.GetAxis("Vertical");
        }


        myT.position += myT.forward * movementSpeed * Time.deltaTime * V;
    }

Но когда я использую этот код, корабль меняет свою позициюна оси Z, когда нос корабля поворачивается вниз или вверх в зависимости от движения

как наклонить корабль без изменения положения на оси Z

Исходное положение корабля:

Ships initial Position

Когда пользователь поворачивает корабль:

When user turns the ship

Каким другим способом я должен поворачивать свой корабль?

1 Ответ

0 голосов
/ 25 июня 2018

Почему бы не иметь промежуточный объект и не сделать его космическим кораблем?

Таким образом, вместо того, чтобы вращать корабль, вы поворачиваете этот промежуточный объект, а затем можете перемещать базу корабля по ходу движения. Хитрость в том, что промежуточный объект вращается только по одной оси, а корабль вращается только (относительно своего родительского преобразования) только по одной оси.

Это позволит избежать любого бизнеса, связанного с углом Эйлера / кватернионом / движущейся системой отсчета, который необходим для решения такой простой задачи.

...