我很惊讶我在网上找不到太多关于此的内容,也许我只是不知道要搜索的正确术语。
我正在制作一个自上而下的赛车游戏,并且想知道跟踪赛道周围赛车进度的最佳方法是什么,即在赛道周围的任何给定点告诉哪些赛车领先于其他赛车,并且还制作确保完成整个圈数,等等。该路线被定义为外部和内部赛道边界的一系列坐标。
我可以想到几种方法——例如在每个角落放置检查点,并通过它在前一个和下一个检查点之间的位置来获得汽车的进展——但这似乎不是特别优雅或健壮。有没有“标准”的做法?还是更好的方法?
我很惊讶我在网上找不到太多关于此的内容,也许我只是不知道要搜索的正确术语。
我正在制作一个自上而下的赛车游戏,并且想知道跟踪赛道周围赛车进度的最佳方法是什么,即在赛道周围的任何给定点告诉哪些赛车领先于其他赛车,并且还制作确保完成整个圈数,等等。该路线被定义为外部和内部赛道边界的一系列坐标。
我可以想到几种方法——例如在每个角落放置检查点,并通过它在前一个和下一个检查点之间的位置来获得汽车的进展——但这似乎不是特别优雅或健壮。有没有“标准”的做法?还是更好的方法?
这是我的建议 - 它可能不是绝对准确,但应该足以满足您的需要。
首先为课程定义一个中心轴 - 因为您的课程似乎由一系列直线段组成,这可能是与课程边界等距的线。现在跟踪一条线上的进度比跟踪二维的进度更容易,所以我建议你将汽车的位置投影在那个中心轴上。我认为简单的正交投影在这里会做得最好。只需在中心轴上找到最接近汽车位置的点,并将其用于跟踪进度。
计算中心轴的总长度,然后计算沿中心轴的总长度,直到每辆汽车的投影。这会给你汽车的进步。如果总长度为 T 并且直到投影的距离为 t,则汽车将通过t/T
路线或路线的t*100/T
百分比。