我正在用HTML5画布和JavaScript制作另一个乒乓克隆。我遇到的问题最好用下面的图表来描述:

如果球以每帧10 in的速度移动,我不能仅仅测试球是否接触到了桨,因为在这个框架步骤中,球有可能已经超过了桨。
有什么办法来测试球是否与桨相撞了?
编辑:目前我唯一能想到的两个解决方案是:

或

发布于 2010-12-05 15:30:40
您可以通过确定由paddle定义的线和增量中转线是否相交来检测冲突。如果它们这样做了,那么您可以在交点应用反弹逻辑。
希望这能有所帮助。
鲍勃
请看这里:
http://mathcentral.uregina.ca/QQ/database/QQ.09.97/parsons1.html
记住,你的几何是简单的,因为你有一条垂直线作为桨。以下是简化(请看我这里的数学):
// line 1 (x1,y1) to (x2,y2)
var x1 = -1.0;
var y1 = 1.0;
var x2 = 1.0;
var y2 = -1.0;
// line 2 (x3,y3) to (x4,y4)
// note: this is the paddle and y3=y4
var x3 = -1.0;
var y3 = 0.5;
var x4 = 1.0;
var y4 = 0.5;
var ix, iy;
function calculateIntersection(){
var ixtop = x1*(y2-y3) + x2*(y3-y1);
var ixbot = y2 - y1;
var ix = ixtop/ixbot;
var iy = y3;
}我相信这是最有效的方法,并会提供一个准确的答案。如果没有足够的分辨率,通过像素矩阵对角移动将导致伪影。
发布于 2010-12-05 15:30:17
复杂的解向量之类的。
简单的解决方案,如果通过简单地添加10 1px移动球,将其移动1 1px 10次,每次检查它是否碰撞:
for(var i = 0; i < 10; i++) {
moveBallByOne();
if (ballCollision()) { // you could check for a simple bounding box overlap here
invertBallDirection();
break;
}
}发布于 2010-12-05 15:29:30
每次你的球跳十个像素,你必须计算每一个位置之间,以确保它不是试图通过一个固体物体,正如你已经看到的会发生。
https://stackoverflow.com/questions/4359488
复制相似问题