当球高速移动时,它有可能穿透球拍。这无疑使游戏的真实性降低

问题描述 投票:0回答:1

当速度很高的时候,球会穿透桨,为了解决这个问题,我尝试用'交'球-矩形和桨-矩形,但还是会穿透。以下是原点碰撞的方法,b是球,p是桨。另外,我试着设置如果球没有撞到上、左、右、下或桨2,那么它一定会撞到桨1。结果是我们无法定义球飞行时的状态。

有谁知道如何解决这个问题?

有谁知道如何解决这个问题?

private bool CollisionOccurred()
        {
            // assume no collision
            bool retval = false;

            // heading towards player one
            if (m_ball.DX < 0)
            {
                Rectangle b = m_ball.Rect;
                Rectangle p = m_paddle1.Rect;
                retval =
                    b.Left < p.Right &&
                    b.Right > p.Left &&
                    b.Top < p.Bottom &&
                    b.Bottom > p.Top;
            }
            // heading towards player two
            else // m_ball.DX > 0
            {
                Rectangle b = m_ball.Rect;
                Rectangle p = m_paddle2.Rect;
                retval =
                    b.Left < p.Right &&
                    b.Right > p.Left &&
                    b.Top < p.Bottom &&
                    b.Bottom > p.Top;
            }

            return retval;
c# xna monogame
1个回答
0
投票

尝试添加速度的球(像一个保证金)为您的矩形的每个边。

retval = b.Left - b.velocity.X < p.Right &&b.Right+ b.velocity.X > p.Left &&b.Top- b.velocity.Y < p.Bottom &&b.Bottom+ b.velocity.Y > p.Top;
© www.soinside.com 2019 - 2024. All rights reserved.