【发布时间】:2014-03-14 12:49:15
【问题描述】:
我一直在尝试在我的程序中进行碰撞检测。在我的程序中,立方体内有一个球。我希望球在立方体内反弹,如果我的立方体上有一个洞,我希望它掉出来。
我现在是如何进行“碰撞”的:
protected void Bounce()
{
if (ballPosition.X >= boxWidth || ballPosition.X <= -boxWidth)
modelVelocity.X *= -1;
if (ballPosition.Y >= boxHeight*4.18 || ballPosition.Y <= -boxHeight)
modelVelocity.Y *= -1;
if (ballPosition.Z >= boxLength || ballPosition.Z <= -boxLength)
modelVelocity.Z *= -1;
}
但是当我实现重力时,这并不能很好地工作并且出现故障。它穿过两侧。它不会留在盒子里。那么如何检测碰撞,并可能检测到一个角度,如果有倾斜的墙壁,它会在某个方向反弹?
【问题讨论】:
-
ballPosition.X 和 .Y 引用在哪里?如果不使用某种半径,这些值无法检测到球体的所有边缘。很有可能您在上面提到的位置实际上是球体的中心,而您看到的是边缘被剪掉。你必须做数学才能找到球的边缘。