【问题标题】:XNA Keeping a sprite from leaving the ScreenXNA 防止精灵离开屏幕
【发布时间】:2014-07-11 04:38:42
【问题描述】:

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

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

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

【问题讨论】:

    标签: c# xna


    【解决方案1】:

    是的,你写错了。你的意思是&gt;= 1280。在正常游戏情况下,&lt;= 将始终评估为真,并将 X 位置设置为 1280。

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

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

    从边缘减去精灵的宽度,让精灵始终保持“在屏幕上”。比较的“或等于”部分不是必需的,因为等于条件只会将值设置为已经存在的值。

    【讨论】:

    • 哇,谢谢!有效。这对我来说会变得越来越难,因为我正在为我的第二个游戏做平台游戏。具备以上基本 C# 编程知识。
    • @Howl 很高兴你成功了!祝您的项目好运,并感谢您发布一个明确的问题,其中包含已经找到的有问题的代码。虽然是一个简单的错误,但第一个问题非常好!
    【解决方案2】:

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

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

    if (charpos.x <= 1280)
    

    应该是:

    if (charpos.x >= 1280)
    

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

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

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

    charpos.x = 1280 - character.width;
    

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多