0

当我运行这个时,在球靠近左桨后,它会提前反弹四分之一屏幕,击中桨,然后在球移动一点后,它开始来回弹跳,好像它撞到墙上一样。你能看到我做错了什么(或者我不应该做的事)吗?

ballPos 是球位置的 Vector2 值。paddleStaticPos.X 是桨的 X 位置(位于左墙 5 处) paddlePos.X 是左桨的 Y 值。

我知道我应该分别使用左右桨的矢量值而不是绑定,但我没有时间再修复它了。这是代码:

            if (ballPos.X <= paddleStaticPos.X + 15)
            {
                if (ballPos.Y <= paddlePos.X + 25 && ballPos.Y >= paddlePos.X)
                {
                    gameStartpaddleHit = true;
                    lastPaddleHitLeft = true;
                    ballLeft = ballLeft * -1;
                    ballUp = ballUp * -1;
                    soundEffect[0].Play();
                }
            }
            //Sedond Sector(26-100[MIRROR EFFECT])
            int tmp2=ballLeft;
            if (ballPos.X <= paddleStaticPos.X + 15)
            {
                if (ballPos.Y <= paddlePos.X + 99 && ballPos.Y >= paddlePos.X + 26)
                {
                    gameStartpaddleHit = true;
                    lastPaddleHitLeft = true;
                    ballLeft = tmp2 * -1;
                    soundEffect[0].Play();
                }
            }


            //Third Sector(101-125[SHARP ANGLE DEFLECT])
            if (ballPos.X <= paddlePos.X + 15)
            {
                if (ballPos.Y <= paddlePos.X + 125 && ballPos.Y >= paddlePos.X + 100)
                {
                    gameStartpaddleHit = true;
                    lastPaddleHitLeft = true;
                    ballLeft = ballLeft * -1;
                    ballUp = ballUp * -1;
                    soundEffect[0].Play();
                }
            }

如果您更喜欢 pastebin: http: //pastebin.com/K0PitFcQ

4

1 回答 1

0

您正在针对 paddlePos X 测试 ballPos Y

if (ballPos.Y <= paddlePos.X + 25 && ballPos.Y >= paddlePos.X)

不应该是这个吗?

if (ballPos.Y <= paddlePos.Y + 25 && ballPos.Y >= paddlePos.Y)
于 2014-01-06T11:01:57.317 回答