【问题标题】:XNA Pong collisionXNA Pong 碰撞
【发布时间】:2013-05-30 08:03:43
【问题描述】:

我正在 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);
        }

【问题讨论】:

  • 请将您的问题缩小到几行...
  • 现在代码更少,更容易阅读

标签: c# xna collision-detection pong


【解决方案1】:

我只能假设有关您的程序的一些属性。 当你打电话时:

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

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

如果这不是您尝试解决的奇怪行为,您能否澄清一下您遇到的行为?

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-12-17
    • 2013-08-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多