2013-04-11 4 views
0

При использовании Matrix.CreateTranslation(x,y,z) Я получаю странные результаты. Я тестировал с использованием фиксированных значений, одной переменные, в то время, и определил следующий:Перевод модели XNA - bizzarre

  • При изменении координат X, модель перемещается от верхнего левого угла до нижнего правого угла.

  • При изменении координат Y модель перемещается вверх и вниз по мере необходимости.

  • Я не планирую изменять координаты Z, но из-за природы моей программы я не могу точно определить, что она делает.

У меня есть модель. Вращение работает отлично. Я выполняю свои переводы в правильном порядке (по крайней мере, я думаю): scale * rotation * translation.

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

Вот мои настройки камеры:

campos = new Vector3(5000.0F, 5000.0F, 5000.0F) 
effect.View = Matrix.CreateLookAt(campos, Vector3.Down, Vector3.Up) 

я могу предоставить дополнительную информацию по мере необходимости.

ответ

1

Второй аргумент Matrix.CreateLookAt - это не направление, к которому обращена камера, а целевая точка.

Если вы попытаетесь сделать камеру смотреть вниз, используйте

Matrix.CreateLookAt(campos, campos + Vector3.Down, Vector3.Forward) 

Это покажет камеру, чтобы всегда смотреть на точку один блок ниже камеры.

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

+0

ОК, ранее, когда я попробовал, моя модель вообще не появлялась. С тех пор я установил это, но проблема перевода еще не решена. Я добавляю 5 к позиции X каждый тик, и он перемещается в нижний правый угол экрана. – Ares513

Смежные вопросы