我正在根据本教程http://code.tutsplus.com/tutorials/learn-createjs-by-building-an-html5-pong-game--active-11845
做一个小游戏我做了我的更改,但这条线路有问题
if(ball.x <= player.x + 22 && ball.x > player.x && ball.y >= player.y && ball.y < player.y + 75)
每当用户从左侧或右侧快速击中它时,即使在教程中,球也会保持弹跳,但是有错误,有人可以帮我吗?
由于
答案 0 :(得分:3)
我认为最简单的解决方案是向球添加方向变量并进行测试。如果它是朝向玩家做检查你已经编码,否则忽略。如果检查通过,则在玩家拦截它时改变方向。然后当它反弹时,再次改变方向。这也将大大简化您的代码并减少正在进行的检查次数。
答案 1 :(得分:2)
我为您的问题找到了正确的解决方案
你应该再添加一个xSpeed<0
条件,以便if语句更改为如下所示
if(xSpeed<0 && ball.x <= player.x + 22 && ball.x > player.x && ball.y >= player.y && ball.y < player.y + 75 )
{
xSpeed *= -1;
SoundJS.play('hit');
}
我在测试代码后给了你这个解决方案。
答案 2 :(得分:1)
我认为这是因为球由于某种原因进入太远而且它会进行多次*= -1;
运行。
因此您应该测量距离并将其恢复,然后*= -1
代码就像这样:
if(ball.x <= player.x + 22 && ball.x > player.x && ball.y >= player.y && ball.y < player.y + 75)
{
ball.x += ball.x-player.x;
xSpeed *= -1;
SoundJS.play('hit');
}
所以我们可以确保球在杆内时球出来。
**来自您发布的链接的编辑代码。
答案 3 :(得分:1)
在2D中检测碰撞有两种主要方法:
在你的情况下,球是圈(显然),玩家是矩形,我想。
回答问题“如果矩形和圆相交,如何通过公式检查?”得到了答复here。
答案 4 :(得分:0)
嗯如果问题是&#34;太快&#34;球将进入桨内,你有三个选择: