Javascript 如何在html5画布中检测半圆碰撞?
我正在写两个圆圈的碰撞检测。但我真正想要的是,主对象只会在其表面的一半与其他对象碰撞,如下图所示: 半圆形表面将从不同方向与其他圆碰撞。我应该如何编写函数来模拟它 我目前发现的两个圆圈检测结果如下:Javascript 如何在html5画布中检测半圆碰撞?,javascript,html,collision-detection,Javascript,Html,Collision Detection,我正在写两个圆圈的碰撞检测。但我真正想要的是,主对象只会在其表面的一半与其他对象碰撞,如下图所示: 半圆形表面将从不同方向与其他圆碰撞。我应该如何编写函数来模拟它 我目前发现的两个圆圈检测结果如下: var dx = circle1.x - circle2.x; var dy = circle1.y - circle2.y; var distance = Math.sqrt(dx * dx + dy * dy); if (distance < circle1.radius + circ
var dx = circle1.x - circle2.x;
var dy = circle1.y - circle2.y;
var distance = Math.sqrt(dx * dx + dy * dy);
if (distance < circle1.radius + circle2.radius) {
// collision detected!
}
var dx=circle1.x-circle2.x;
var dy=circle1.y-circle2.y;
变量距离=数学sqrt(dx*dx+dy*dy);
if(距离<圆圈1.半径+圆圈2.半径){
//检测到碰撞!
}
但是只有一半的主要圈子参与进来怎么样?那么,只有一小部分圆曲面参与碰撞呢?假设只有Math.PI/2度的圆将检测碰撞?假设检测碰撞的代码是正确的(我没有测试它),您所要做的就是确定哪个圆更靠近右侧,以知道哪个圆将碰撞 假设图像中的半圆是圆1
if (distance < circle1.radius + circle2.radius) {
// collision detected!
if(circle1.x < circle2.x){
// Circle collided on the right side of the other circle,
// which means it's a real collision..
}
}
if(距离
那个半圆能旋转吗?如果没有,那么就很容易了:碰撞只发生在右侧,这意味着你只需要检查半圆\圆心.x \位置
和半圆\圆心.x \位置+半圆.半径
是的,它在各个方向上移动。请注意,我们没有检测到平面零件的碰撞。然后更难-我能弄清楚的是,您确定两个边缘点(在当前情况下是centerX,centerY+-radius
,但在不垂直线的情况下会变得很棘手),并使用旋转角度定义形状。然后,您可以确定随机X,Y点是否在半圆内。但是碰撞通常是一项艰巨的任务,因此,如果您希望增加简单形状以外的复杂性,我建议您寻找相关的库。例如,PhaserJS拥有强大的物理引擎。