我正在使用 制作一个游戏库SFML.Net
,我希望能够在屏幕上放置一个 50x50 的图块。
我有窗口宽度、窗口高度、MouseX/MouseY 和基于自定义相机的偏移量。按下 WASD 时,偏移量可能会增加/减少 0.5 个像素。
因此,我需要知道如何获取相对于所有这些变量的 mouseX,这样我就可以放置一个图块,使其错觉是用户按下鼠标的位置。
我已经尝试了下面的代码。
注: Game.Instance.Scenes[Game.Instance.CurrentScene].Camera.Offset
是相机偏移量。
public static float MouseX = 0;
public static float MouseY = 0;
public static float MouseXRelative = 0;
public static float MouseYRelative = 0;
public static void UpdateRelative()
{
MouseXRelative = MouseX + Game.Instance.Scenes[Game.Instance.CurrentScene].Camera.Offset.X;
MouseYRelative = MouseY + Game.Instance.Scenes[Game.Instance.CurrentScene].Camera.Offset.Y;
}
下面这段代码。
注意:这会检测何时按下鼠标左键,然后创建一个 GameObject、MyGO
、 ** 并根据 MouseX/MouseY 和偏移量定位它。另外,RoundTo()
我做了一个简单的扩展方法,允许四舍五入到某个数字。
if (MouseHandle.LeftButtonDown)
{
float x = MouseHandle.MouseX.RoundTo(50) + Game.Instance.Scenes[Game.Instance.CurrentScene].Camera.Offset.X;
float y = MouseHandle.MouseY.RoundTo(50) + Game.Instance.Scenes[Game.Instance.CurrentScene].Camera.Offset.Y;
MyGO gm3 = new MyGO();
gm3.SetPosition(x, y);
Game.Instance.Scenes[Game.Instance.CurrentScene].Add(gm3);
}