1

我正在使用以下代码,其中 samosarect 是一个以某种速度从右到左的对象(假设每个循环 10 像素),舌头矩形是我的玩家的舌头,宽度增加到 200,然后再次减小到 0。舌头仅在舌头时增加是真的,当我按下拍摄按钮时,舌头布尔值变为真。所以我的问题有时是我的播放器(舌头)不吃(不与 samosarect 相交)samosa(我用眼睛观察矩形相交但我的代码不是得到那个),有时它(与适当的动画相交)吃samosa没有任何问题。

if (Texture.samosarect.Contains(Texture.tonguerect) ||      Texture.tonguerect.Intersects(Texture.samosarect) && tongue)
            {
            Texture.tonguerect.Y = -50;
            System.Diagnostics.Debug.WriteLine("eated samosaaa");
            Texture.samosarect.X = -400;
            eateds = true;
            jumpframe = 17;
            tonguereached = true;
            caught = true;
            if (MainPage.togkey == 1)
                eateffect.Play();

            if (!catchedd)
            {
                score += 30; catched++; catchedd = true;
                showpoint = true;

            }
            else { catchedd = false; }

        }
4

1 回答 1

0

对于一般情况,这个这个可以帮助你。

算法在此处描述。

如果要准确谈论 xna,请看这里

if (ballRect.Intersects(bat1Rect))
{
    ballVelo.X = Math.Abs(ballVelo.X) * -1;
}

if (ballRect.Intersects(bat2Rect))
{
    ballVelo.X = Math.Abs(ballVelo.X);
}
于 2013-11-14T16:53:56.727 回答