基本上我在做一个游戏的过程中,这是像乒乓球,突破等,我有一些问题时,球和桨碰撞。。。但只是有时候!
下面的视频是正在发生的事情:http://www.youtube.com/watch?v=uFZIxFIg0rI
所以是的,基本上,当球与球拍相撞时,它有时会变得有点疯狂......通常情况下,如果我将球拍移动到球接近它的相反方向。此外,球有时会被夹在游戏窗口的底部和球拍之间......即使我有代码来阻止球、球拍等离开屏幕......
任何想法。。。还是简单的修复?谢谢
哦,顺便说一句。。。下面是我用来检测球和桨之间碰撞并阻止它们走出游戏窗口的代码:
//CODE FOR CHECKING IF THE BALL IS OUTSIDE OF THE SCREEN
//checks for collision with left wall
if (pPosition.X <= 0)
{
pVelocity.X = -pVelocity.X;
}
//checks for collision with right wall
if (pPosition.X + pTexture.Width >= screenWidth)
{
pVelocity.X = -pVelocity.X;
}
//checks for collision with top wall
if (pPosition.Y <= 0)
{
pVelocity.Y = -pVelocity.Y;
}
//checks for collision with bottom wall
if (pPosition.Y + pTexture.Height >= ScreenHeight)
{
pVelocity.Y = -pVelocity.Y; //only need to invert Y velocity...
}
}
//CODE FOR CHECKING COLLISION BETWEEN BALL AND PADDLE
if (Ball.pRectangle.Intersects(Paddle.GetRectangle))
{
//Ball.pPosition.Y -= Ball.pVelocity.Y;
Ball.pVelocity.Y = -Ball.pVelocity.Y;
}
Ball.pPosition += Ball.pVelocity; //As this is in the update method, this just enables the ball to keep moving each frame...
17:21编辑:
if (Ball.pRectangle.Intersects(Paddle.GetRectangle))
{
if (Ball.pRectangle.Bottom > Paddle.GetRectangle.Top)
{ //intersecting top of paddle
//WORKING
Ball.pPosition.Y = Paddle.GetRectangle.Top - Ball.pHeight;
Ball.pVelocity.Y = -Ball.pVelocity.Y;
}
if (Ball.pRectangle.Right > Paddle.GetRectangle.Left && Ball.pRectangle.Right < Paddle.GetRectangle.Right)
{ //intersecting left of paddle
//WORKING
Ball.pPosition.X = Paddle.GetRectangle.Left - Ball.pWidth;
Ball.pVelocity.X = -Ball.pVelocity.X;
}
if (Ball.pRectangle.Left < Paddle.GetRectangle.Right && Ball.pRectangle.Left > Paddle.GetRectangle.Left)
{ //intersecting right of paddle
//NOT WORKING
Ball.pPosition.X = Paddle.GetRectangle.Right + Ball.pWidth;
Ball.pVelocity.X = -Ball.pVelocity.X;
}
}
你的问题不是球被夹在游戏窗口的底部和球拍之间,而是球被卡在球拍里。
当您从顶部检测到球拍击中时,请将球的Y坐标设置为球拍上方。
如果你检测到球拍底部被击中,那么你必须将球的Y坐标设置在球拍下方。
同样,如果你从侧面击球,你必须设置球的X坐标,使其位于桨外。
重点是,击中后面板和球不得相互接触,否则您会立即检测到第二次击中。
这两个球在画布上弹来弹去。 如果球碰撞了,帆布应该说游戏结束。 这是一个代码,我已经为碰撞到目前为止
我想创造一个和乒乓球一样的游戏。我创建了一个沿着圆周移动的桨。注意桨是弧形的。我想知道我如何检测球和桨之间的碰撞。为了更好地理解这个:http://gyazo.com/7bac8acdf0faf66005015d496498ca33球将在圆圈内,当与桨碰撞时反射出去。提前感谢!
我需要检测一个球(椭圆形)和多个块(矩形)之间的碰撞。在游戏中表示块的类块中,我有以下代码来检测碰撞(其简短版本,仅用于演示示例): 碰撞不好,因为椭圆形,但一般来说,我想问是否有东西在java(摇摆)检测碰撞,我的意思是如果矩形没有完全显示在画布上,这意味着球重叠一个块坐标
我正在创建一个突破游戏来熟悉Java。目前我已经把一切都做好了,但我注意到球似乎是朝着同一个方向飞的。 我已经对它进行了编程,当球碰到球拍时,Y速度是相反的。这是可行的,但球似乎遵循相同的路线。。。 如何让碰撞看起来更真实? 当球击中桨的左侧时,我想将其重新定向到左侧,但我不确定在哪个角度反射它。有人能提供一个公式来帮助我计算出当球接触桨的左侧或右侧时需要引导的角度吗?
我正在我的游戏中实现碰撞检测,并有一点麻烦,理解如何计算矢量,以固定我的形状重叠碰撞。 举个例子,我有两个方块。和。对于这两者,我都知道它们的、、和。但是是移动的,所以他有一个速度和一个速度。假设我每秒更新一次游戏。我已经说明了下面的情况。 现在,我需要一个公式来得到矢量来固定重叠。如果我将这个向量应用到红色方块(),它们就不会再重叠了。这就是我想要达到的目标。 谁能帮我算出计算向量的公式吗? 如
我正在做一个突破克隆,在球与桨的碰撞中遇到了一些小麻烦。我用一个矩形表示球和桨,当它们相交时,表示球速度的Y向量为负数(如下所示)。这一切都很好。问题是当球拍向右移动时,我希望它将球稍微向右移动(与正常反射相反),我希望在相反方向发生相同的情况,即球拍向左移动。我不知道该怎么做,我已经找遍了。任何帮助都将不胜感激。谢谢 编辑:基本上我想根据球拍移动的方向稍微改变球从球拍上反弹的角度。如果桨叶不移动