XNA保持精灵不离开屏幕

时间:2014-07-10 20:32:48

标签: c# xna

我一直试图保持一个精灵离开屏幕到目前为止我不让它离开屏幕的左侧和屏幕的底部。但是当我试着阻止它离开屏幕的右侧时。它确实显示了精灵/角色。

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

当我在if(charpos.X <= 1280) charpos.X = 1280; 时,它将精灵传送到其他地方,我无法看到。我编写屏幕右侧的错误吗?

2 个答案:

答案 0 :(得分:2)

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

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

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

从边缘减去精灵宽度,允许精灵始终保持&#34;在屏幕上&#34;。 &#34;或等于&#34;比较的一部分是没有必要的,因为等于条件只会将值设置为已经存在的值。

答案 1 :(得分:1)

您的代码中有一个明确的错误和一个错误。

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

if (charpos.x <= 1280)

应该是:

if (charpos.x >= 1280)

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

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

要解决此问题,您需要将代码更改为以下内容:

charpos.x = 1280 - character.width;

当将角色保持在屏幕上时,这将考虑角色的宽度。