【发布时间】:2021-11-16 19:27:59
【问题描述】:
我目前面临一个无法解决的问题。在我最终应该成为某种虚拟模型铁路的 2D 游戏中,我可以创建一条由不同铁路类型组成的路径。每条铁路都有自己的航路点。现在问题如下:
直轨不需要很多航路点,因为它们只需要定义两个;起点和终点。另一方面,曲线需要更多的航路点,因此在其上移动的物体并非都是锯齿状和不平滑的。我面临的问题是,整个铁路上的路点分布如此不均匀,这使得物体沿路径移动的速度非常不均匀。
我也已经知道这个问题:曲线部分的点非常狭窄,分布看起来像这样:
See this picture for an example with red Gizmo.Spheres as waypoints
现在,当我沿着所述路径移动对象时,我会这样做:
wagon.transform.position = Vector2.MoveTowards(wagon.transform.position, wagon.GetNextPosition(), wagon.GetSpeed());
Vector2.MoveTowards()方法的第三个参数是maxDistanceDelta,所以它只能将那个量移动到wagon.GetNextPosition()的方向上,而wagon.GetNextPosition()是不断更新的。
扭曲的是,密集打包的点导致的距离比 maxDistanceDelta 短。所以在铁路的那些部分,物体的移动速度比 wagon.GetSpeed() 每帧慢。
我已经有了解决方案,但遗憾的是我无法使用:我获取了每个航路点并将它们均匀地分布在路径上。我不想要那个;我希望路径保持原样,但速度要一致。
提前感谢您的帮助!
PS:我已经看过类似的线程,但这些解决方案似乎都不适合我:(即:
【问题讨论】:
标签: c# performance unity3d path move