XNA - управление объектом с клавиатуры - PullRequest
0 голосов
/ 28 октября 2010

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

Как заставить корабль двигаться в направлении, в котором он стоит?то есть, если мой корабль направлен на восток, ключ вверх заставляет его идти на север, а не на восток.

Ответы [ 3 ]

1 голос
/ 28 октября 2010

Ваш вопрос не очень понятен - я предполагаю, что вы используете модели и матрицы (в отличие от SpriteBatch или чего-то еще).Итак, сделайте предположение - я бы сказал, что порядок ваших матричных операций неправильный.

Этот ответ на похожий вопрос может помочь.

Каждая матричная операцияпроисходит вокруг происхождения.Поэтому, если вы делаете свое вращение после , когда вы перемещаете свой корабль в нужное положение, ваше вращение также будет эффективно "вращать" направление движения.

0 голосов
/ 05 августа 2014

Вам нужно иметь направление вектор, подобный этому

Vector3 direction = Vector3.Transform(Vector3.Forward, Matrix.CreateFromYawPitchRoll(yaw, pitch, roll));

Далее, получите ваш скорость вектор

Vector3 velocity = direction * speed;

И переместите вашКорабль

float time (float) = gameTime.ElapsedTime.TotalSeconds;
position += velocity * time;

В этом примере рыскание равно угол , шаг и крен держите 0.

0 голосов
/ 05 августа 2014

Самый простой способ - задать переменные угла и скорости, поэтому при нажатии влево и вправо вы меняете угол, а при нажатии вверх и вниз - скорость вашего корабля.

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