XNA Pong碰撞

时间:2013-05-30 08:03:44

标签: c# xna collision-detection pong

我正在XNA打乒乓球比赛,我遇到了球拍碰撞的问题。 桨的一侧工作正常,但顶部和底部是很奇怪的。我尝试了很多东西,但它仍然无效。 这是我目前的代码:

        protected override void Update(GameTime gameTime)
        {

            //Intersection
            if (bPos.Intersects(p1Pos))
            {
                //top

                //bottom

                //middle
                if (bPos.X <= p1Pos.X + p1Pos.Width)
                    bSpd.X = -bSpd.X;
            }
            if (bPos.Intersects(p2Pos))
            {
                //top

                //bottom

                //middle
                if (bPos.X + bPos.Width >= p2Pos.X)
                    bSpd.X = -bSpd.X;
            }

            bPos.X = bPos.X + (int)bSpd.X;
            bPos.Y = bPos.Y + (int)bSpd.Y;

            if (bPos.Intersects(p1Pos))
            {
                //top

                //bottom

                //middle
                if (bPos.X <= p1Pos.X + p1Pos.Width)
                    bSpd.X = -bSpd.X;
            }
            if (bPos.Intersects(p2Pos))
            {
                //top

                //bottom

                //middle
                if (bPos.X + bPos.Width >= p2Pos.X)
                    bSpd.X = -bSpd.X;
            }

            base.Update(gameTime);
        }

1 个答案:

答案 0 :(得分:0)

我可以假设一些关于你的程序的属性。 当你打电话:

bPos.X <= p1Pos.X + p1Pos.Width

这会检查你的球的中心。这不会反映球的表面,而是球的中心点。

如果这不是您试图解决的奇怪行为,请您清楚一下您遇到的行为?