我正在尝试做的事情:
我已经做过的事情:
根据玩家在游戏中的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
谢谢。
答案 0 :(得分:1)
在游戏中旋转玩家时,敌人旋转,但是它们似乎绕着0,0轴旋转,而不是玩家。
是的,这就是您的轮换代码所做的。要绕另一个点旋转,必须首先减去该旋转中心的坐标,然后进行旋转,然后再次添加该旋转中心的坐标。