У меня есть небольшой игровой уровень, выложенный с декартовой системой координат. У меня есть класс камеры, что я хочу, чтобы перевести все точки из декартова пространства в изометрическое пространство с помощью этой матрицы:2D изометрическая матрица камеры
[Cos (45), SIN (45)]
[-sin (45), cos (45)]
На бумаге, умножая любой вектор на матрицу, успешно помещает этот вектор в изометрическое пространство после первого поворота.
Прямо сейчас, я только в состоянии получить уровень рисовать в соответствии с положением камеры, используя эту матрицу:
public Matrix GetTransformation()
{
_mTransform =
Matrix.CreateTranslation(-Position.X, -Position.Y, 0);
return _mTransform;
}
Где я запутался, где матрица я перечислял выше вписывается в это уравнение.
CameraIso2D не принимает никаких параметров, но здесь есть функция Draw
public void Draw(SpriteBatch sb)
{
// Start drawing from this GameLayer
sb.Begin(
SpriteSortMode.FrontToBack,
BlendState.AlphaBlend,
null,
null,
null,
null,
_transformation);
// Draw all contained objects
foreach (DrawableGameObject dgo in _drawableGameObjects)
dgo.Draw(sb);
// End drawing from this GameLayer
sb.End();
}
_transformation матрица _mTransform возвращается из CameraIso2D каждое обновление
Можете ли вы добавить код своей камеры? – pinckerman
Объект камеры не принимает никаких аргументов. GameLevel содержит GameLayers и камеру. GameLayers содержат GameObjects, которые они рисуют. GameLayers используют камеру GameLevels для получения каждой матрицы преобразования. Я добавил код рисования, надеюсь, это поможет. благодаря –