Я пытаюсь создать простой изометрический игровой движок, но у вас есть некоторые проблемы с камерой. Когда у меня это так, я могу видеть мою модель спереди. Но я хочу видеть это с изометрической точки зрения. Я пробовал использовать множество методов, но никто не работает. Возможно, я застрял в самом коде? Можете ли вы, ребята, помочь мне с кодом?XNA C#, создающий изометрический вид с 3D-моделями
public class Camera : PositionedObject
{
#region Fields
private Matrix cameraRotation;
#endregion
#region Properties
public Matrix View
{
get;
set;
}
public Matrix Projection
{
get;
protected set;
}
public Vector3 Target
{
get;
set;
}
#endregion
#region Constructor
public Camera(Game game, Vector3 position, Vector3 target, Vector3 rotation, bool Orthographic, float near, float far)
: base(game)
{
Position = position;
RotationInRadians = rotation;
Target = target;
if (Orthographic)
{
Projection = Matrix.CreateOrthographic(Game.Window.ClientBounds.Width, Game.Window.ClientBounds.Height,
near, far);
}
else
{
Projection = Matrix.CreatePerspectiveFieldOfView(MathHelper.PiOver4,
(float)Game.Window.ClientBounds.Width/(float)Game.Window.ClientBounds.Height, near, far);
}
}
#endregion
#region Public Methods
public override void Initialize()
{
base.Initialize();
cameraRotation = Matrix.Identity;
}
public override void Update(GameTime gameTime)
{
base.Update(gameTime);
cameraRotation = Matrix.CreateFromAxisAngle(cameraRotation.Forward, RotationInRadians.Z)
* Matrix.CreateFromAxisAngle(cameraRotation.Right, RotationInRadians.X)
* Matrix.CreateFromAxisAngle(cameraRotation.Up, RotationInRadians.Y);
Target = Position + cameraRotation.Forward;
View = Matrix.CreateLookAt(Position, Target, cameraRotation.Up);
}
public void Draw(BasicEffect effect)
{
effect.View = View;
effect.Projection = Projection;
}
#endregion
}
Спасибо, что мне очень помогли. Я действительно получаю этот прекрасный изометрический вид. Единственная проблема, с которой я сталкиваюсь сейчас, - это то, что она всегда сосредоточена на этом, поэтому, если я перемещаю свою камеру, она не перемещается, как игровая камера. Наверное, потому что я слишком близок к точке фокусировки. Должен ли я просто перемещать все объекты и камеру назад из фокуса или есть способ всегда позволять ему смотреть на определенный угол и действительно создавать изометрический вид при перемещении камеры? Или, конечно, я должен переместить все мои объекты вместо камеры. Какой был бы лучший выбор в этом случае? Спасибо за хороший ответ! – Worempie
Если вы хотите переместить камеру вокруг, вы просто «переместите» FocusPoint, и камера продолжит поддерживать правильное положение и ориентацию относительно этого :) –
Исправлено: D Большое спасибо! – Worempie