Javascript “碰撞”;“小故障”;如果你愿意,在画布上
有一个圆弧可以检测底部对象的位置。这个弧线或球反弹良好,直到第二次反弹,并在地板上出现故障。变量Javascript “碰撞”;“小故障”;如果你愿意,在画布上,javascript,html5-canvas,Javascript,Html5 Canvas,有一个圆弧可以检测底部对象的位置。这个弧线或球反弹良好,直到第二次反弹,并在地板上出现故障。变量ball.gSy控制球下落的速度。现在它被乘以10(ball.y+=10*ball.gSy;)来加速地板上的毛刺效果。另外,你可以用箭头键控制球,球确实会卡在侧壁上,但我特别好奇的是底部地板的问题 以下是一个JSFIDLE链接,可以更好地满足您的用户需求: 您的问题是您将球向下移动,但当发生碰撞时,您无法将球移回未卡在地板上的位置 因此,您正确地检测到碰撞,但您的球已经部分穿过墙,无法向上移动 以下是
ball.gSy
控制球下落的速度。现在它被乘以10(ball.y+=10*ball.gSy;
)来加速地板上的毛刺效果。另外,你可以用箭头键控制球,球确实会卡在侧壁上,但我特别好奇的是底部地板的问题
以下是一个JSFIDLE链接,可以更好地满足您的用户需求:
您的问题是您将球向下移动,但当发生碰撞时,您无法将球移回未卡在地板上的位置 因此,您正确地检测到碰撞,但您的球已经部分穿过墙,无法向上移动 以下是您需要做的大致情况:
ball.y += 10*ball.gSy;
for(var i = 0; i < objects.length; i++){
if(ball.x > objects[i].x - ball.r &&
ball.y > objects[i].y - ball.r &&
ball.x < ball.r + objects[i].x + objects[i].w &&
ball.y < ball.r + objects[i].y + objects[i].h)
{
ball.gSy = (-1 * ball.gSy);
ball.y -= 10;// <--- important step
// You need to calculate how much to move the ball BACK up to where it has not quite hit the floor.
}
ball.y+=10*ball.gSy;
对于(var i=0;iobjects[i].x-ball.r&&
ball.y>objects[i].y-ball.r&&
ball.x ball.y-=10;//您的问题是您将球向下移动,但当发生碰撞时,您不会将球移回未卡在地板上的位置
因此,您正确地检测到碰撞,但您的球已经部分穿过墙,无法向上移动
以下是您需要做的大致情况:
ball.y += 10*ball.gSy;
for(var i = 0; i < objects.length; i++){
if(ball.x > objects[i].x - ball.r &&
ball.y > objects[i].y - ball.r &&
ball.x < ball.r + objects[i].x + objects[i].w &&
ball.y < ball.r + objects[i].y + objects[i].h)
{
ball.gSy = (-1 * ball.gSy);
ball.y -= 10;// <--- important step
// You need to calculate how much to move the ball BACK up to where it has not quite hit the floor.
}
ball.y+=10*ball.gSy;
对于(var i=0;iobjects[i].x-ball.r&&
ball.y>objects[i].y-ball.r&&
ball.x