将后轮限制在前轮上

时间:2010-08-31 12:05:03

标签: iphone objective-c opengl-es collision-detection

希望我可以清楚地描述我的情况,因为每当我试图在白板或笔和纸上向其他人描述它时需要几次尝试:)

我程序的一部分涉及一辆沿着铁轨行驶的推车,推车在两个轮子上运行。导轨是一条简单的线条,在曲线上上下弯曲并且也变平。要创建关卡,我使用CGPoints的NSMutableArray并将它们绘制到屏幕上。

我当前的碰撞检测涉及使用每个车轮x-cordinate并将其与点x值数组进行比较。当它在两个点x值之间时,我可以使用梯度来发现它是否在该点的y值之下/之下。当我使用X的确定值时,这很好。

所以这就出现了问题。

首先,我有一个前轮,它沿着这条线完美地滚动,正确的x和正确的y位置。我遇到的问题是创建一个跟随这个前轮的后轮。后轮也完美地跟随线路,但它总是在前轮后面设置X距离,这证明是不切实际的,因为当你上下陡峭的山坡时,由于Y的不同,车轮之间的距离太大。 / p>

示例:

0 ....... 0

希尔示例:

0

........ 0

x中的距离相同,Y的差异使斜边距离更大,并给出了车轮分开的印象。我需要将后轮限制在前轮上,这样它的真实(斜边)距离总是一样的。我遇到的困难是,由于这涉及到改变它的x位置,我无法理解它的碰撞检测。

如果我开始上坡,我必须改变它的y速度以落在前轮后面,所以我需要改变它的x值以保持在车轮后面的真实距离,现在它的y值将是是错的,因为它最终落在了地板上。

现在,我的大脑和办公室都被震撼了几天,请帮忙吗?

1 个答案:

答案 0 :(得分:0)

将车轮保持相同距离的最简单方法可能是将两个车轮限制在轨道上。您可以为NSMutableArray轨道定义第3个数字,距轨道原点的距离。您必须定义自己的类,而不是使用CGPoints类。

另一种可能性是使车轮的中心跟随轨道,但偏移量等于车轮的半径。每个车轮的中心使用轨道x和y坐标,车轮接触轨道到车轮中心的直线角度以及车轮半径来计算,