Страница: 1 |
Вопрос: Помогите с движение от первого лица в Direct3D | Добавлено: 14.12.05 12:42 |
Автор вопроса: ![]() |
Хочу сделать движение от первого лица на VB.NET. Пытался делать так:
Перед рендерингом вызываю функцию Public Sub AscKey() If Keyb(Keys.Up) Then 'Вперед device.Transform.View = Matrix.Multiply( _ device.Transform.View, _ Matrix.Translation(New Vector3(0, 0, -1))) End If If Keyb(Keys.Down) Then 'Назад device.Transform.View = Matrix.Multiply( _ device.Transform.View, _ Matrix.Translation(New Vector3(0, 0, 1))) End If If Keyb(Keys.Left) Then 'Шаг влево device.Transform.View = Matrix.Multiply( _ device.Transform.View, _ Matrix.Translation(New Vector3(1, 0, 0))) End If If Keyb(Keys.Right) Then 'Шаг вправо device.Transform.View = Matrix.Multiply( _ device.Transform.View, _ Matrix.Translation(New Vector3(-1, 0, 0))) End If If Keyb(Keys.NumPad4) Then 'Поворот влево device.Transform.View = Matrix.Multiply( _ device.Transform.View, _ Matrix.RotationAxis(New Vector3(0, 1, 0), 0.01)) End If If Keyb(Keys.NumPad6) Then 'Поворот вправо device.Transform.View = Matrix.Multiply( _ device.Transform.View, _ Matrix.RotationAxis(New Vector3(0, 1, 0), -0.01)) End If If Keyb(Keys.NumPad8) Then 'Поворот вверх device.Transform.View = Matrix.Multiply( _ device.Transform.View, _ Matrix.RotationX(0.01)) End If If Keyb(Keys.NumPad5) Then 'Поворот вниз device.Transform.View = Matrix.Multiply( _ device.Transform.View, _ Matrix.RotationX(-0.01)) End If End Sub При нажатии клавиш: Keyb(e.KeyCode) = True. где Keyb - массив клавиш. Вроде работает, но когда вращаешь по оси Y и оси Z, то все искажается поворотом по оси X. Т.е. когда из одной точки повращался и вернулся в исходную точку ощущение, что повернул голову вбок. Подскажите, пжлста, в чем ошибка и как сделать правильно на VB.NET. |
Ответы | Всего ответов: 1 |
Номер ответа: 1 Автор ответа: ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ICQ: 247906854 Вопросов: 133 Ответов: 882 |
Web-сайт: Профиль | Цитата | #1 | Добавлено: 28.12.05 01:01 |
Возможно, потому, что вращение по оси Х подразумевается на относительно камеры, а относительно мира. Следовательно, если ты сначала повернул голову влево на 45 градусов, а потом начинаешь подымать голову вверх, то фигура, образованная лучом твоего взгляда будет не плоскостью, а чем-то типа конуса. |
Страница: 1 |
|