Что я пытаюсь сделать:
- Визуализация небольшой миникарты с указанием местоположения текущего игрока и
вражеские локации.
- Направление «вверх» на мини-карте 2D всегда должно
покажите, что находится перед игроком в игре, тогда справа
Направление должно показать, что находится справа от игрока, то же самое для
вниз и влево.
- Игрок всегда должен быть в центре миникарты.
Что я уже сделал:
Рендеринг игрока на миникарте, основанный на его координатах x и y в игре, рендеринг врагов на миникарте, основанный на их координатах x и y. Когда я перемещаюсь в игре, враги на миникарте движутся относительно движений игрока.
Что я пытался (но не работал):
float radarX = 200;
float radarY = 200;
float zoom = 2;
// Function
float xOffset = radarX - LocalPlayer.Position.x;
float yOffset = radarY - LocalPlayer.Position.y;
draw(zoom *(LocalPlayer.Position.x + xOffset),
zoom * (LocalPlayer.Position.y + yOffset);
foreach(Player p in Game.OtherPlayers) // list of enemies
{
Vector2 rotatedLocation = VectorExt.Rotate(new Vector2(p.Position.x, p.Position.y), -LocalPlayer.Yaw - 90); // negate and -90 to convert to normal coordinate system (0 @ RHS, 90 @ Top, 180 @ LHS, 270 @ Bottom)
float tempX = zoom * (rotatedLocation.x + xOffset);
float tempY = zoom * (rotatedLocation.y + yOffset);
draw(myPen, zoom * (LocalPlayer.Position.x + xOffset), zoom * (LocalPlayer.Position.y + yOffset);
}
// End of function
// VectorExt.Rotate
var ca = Math.Cos(radians);
var sa = Math.Sin(radians);
return new Vector2(Convert.ToSingle(ca * v.x - sa * v.y), Convert.ToSingle(sa * v.x + ca * v.y));
// End of VectorExt.Rotate
Заранее спасибо.