XNA防止精灵离开屏幕

  • 本文关键字:离开 屏幕 精灵 XNA c# xna
  • 更新时间 :
  • 英文 :


我一直在努力防止精灵离开屏幕,到目前为止,我一直在防止它离开屏幕的左侧和屏幕的底部。但当我试着不让它离开屏幕的右侧时。它确实显示了精灵/角色。

if (charpos.X <= 0)
    charpos.X = 0;
else
if (charpos.X <= 1280)
    charpos.X = 1280;

当我打开if(charpos.X <= 1280) charpos.X = 1280; 时,它将精灵传送到我看不到的其他地方。我是不是把屏幕右侧的代码写错了?

是的,你写错了。你说的是>= 1280。在正常的游戏情况下,<=将始终评估为true,并将X位置设置为1280。

由于XNA坐标从左上角绘制,因此您无法看到该位置(在1280宽的窗口上)。你需要:

int rightSide = 1280 - sprite.Width;
if (charpos.X > rightSide )
    charpos.X = rightSide ;

从边缘减去精灵的宽度,允许精灵始终保持"在屏幕上"。比较中的"或等于"部分是不必要的,因为相等条件只会将值设置为它已经存在的值。

你的代码中有一个明确的和一个可能的错误。

明确的错误是你的第二个if语句:

if (charpos.x <= 1280)

应该是:

if (charpos.x >= 1280)

否则,屏幕上的任何内容都将被视为屏幕外。

可能的错误在于你如何将精灵移回屏幕。如果你的精灵原点是在精灵的左上角,那么将x坐标设置为1280将使精灵位于屏幕的右侧。

要解决这个问题,您需要将代码更改为如下内容:

charpos.x = 1280 - character.width;

这将考虑字符在屏幕上的宽度

最新更新