Я занимаюсь практикой в XNA, и я создал класс, представляющий камеру.
Моя цель состоит в том, чтобы, когда пользователь нажимал некоторые клавиши, переводил камеру (не цель) на 90 градусов по оси X (чтобы увидеть объект, который я поместил в сцену под разными углами). К тому моменту я без проблем перемещаю камеру в X, Y и Z.
На самом деле, чтобы настроить мою камеру, я использую следующие строки кода:
public void SetUpCamera()
{
#region ## SET DEFAULTS ##
this.FieldOfViewAngle = 45.0f;
this.AspectRatio =1f;
this.NearPlane = 1.0f;
this.FarPlane = 10000.0f;
#endregion
this.ProjectionMatrix = Matrix.CreatePerspectiveFieldOfView(MathHelper.ToRadians(this.FieldOfViewAngle), 16 / 9, this.NearPlane, this.FarPlane);
this.ViewMatrix = Matrix.CreateLookAt(new Vector3(this.PositionX, this.PositionY, this.PositionZ), new Vector3(this.TargetX, this.TargetY, this.TargetZ), Vector3.Up);
}
У меня есть этот метод для перемещения камеры:
public void UpdateView()
{
this.ViewMatrix = Matrix.CreateLookAt(new Vector3(this.PositionX, this.PositionY, this.PositionZ), new Vector3(this.TargetX, this.TargetY, this.TargetZ), Vector3.Up);
}
Затем в игре (обновить обработчик событий, у меня есть следующий код)
if (keyboardstate.IsKeyDown(Keys.NumPad9))
{
this.GameCamera.PositionZ -= 1.0f;
}
if (keyboardstate.IsKeyDown(Keys.NumPad3))
{
this.GameCamera.PositionZ += 1.0f;
}
this.GameCamera.UpdateView();
Я хотел бы знать, как сделать так, чтобы камера поворачивалась на 90 градусов, чтобы окружить один объект, который я поместил на экран.
Чтобы лучше объяснить себя с движением камеры, вот видео на YouTube, в котором используется точное движение, которое я пытаюсь описать (см. С 14 секунды)
http://www.youtube.com/watch?v=19mbKZ0I5u4