繁体   English   中英

如何在 Unity 中自然地将车辆从一个坐标移动到另一个坐标?

[英]How can I move a vehicle in Unity naturally from one coordinate to another?

我正在做一个项目,我是编码新手。 该项目的目标是读取 excel 表(包含模拟特定时间车辆的前后坐标)并在 Unity 中模拟生成的 animation。 我知道如何将 object 从一个地方移动到另一个地方。 但是,我无法将车辆沿道路移动并到达最终目的地。 请记住,我只有两个车辆坐标位置(一个用于初始 position,另一个用于最终位置)。 例如,如果最终目的地设置在相邻道路上,则车辆需要在交叉路口自动转弯,如下图所示。

https://imgur.com/a/GA86BBn

目标 1:车辆需要识别道路。

目标 2:车辆应根据其下一组坐标自动轮流。

目标 3:车辆需要自然移动。 车辆应始终面向其移动的方向。 简而言之,它应该移动车辆在现实世界中的移动方式。

您正在寻找的是NavMesh或路径查找算法。 您可以编写自己的 A* 算法,这并不难,您将学习编码。 然后你定义汽车可以行驶或不能行驶的地方; 除非您编写可以从 map 中提取此信息的脚本,否则您可能必须手动执行此操作。 然后你使用你的寻路算法求解并跟随节点。

网上很多解释可以帮助理解 还有其他寻路算法,所以检查一下。

至于面对它要去的地方,你简单地得到它的行进方向,然后旋转它的前向向量来匹配那个方向。

顺便说一句,这不是您的家庭作业解决网站。 如果您想要基本解释或在线搜索,您应该查看游戏开发社区,那里有数百种资源。

如果您说您知道如何将 object 从一个地方移动到另一个地方,那么我看不到问题所在。

您需要应用car.transform.localPosition(xCorrdinate, yCorrdinate)以参考 excel 表上的值。 将其放在 update() 方法上,并添加所需的延迟,以便可以看到从一个点到另一个点的转换。

所以在更新中:

Update() 
{  
   car.transform.localPosition = Vector2.Lerp(car.transform.localPosition,
      new Vector2(newXCoordinate,newYCoordinate), 
      Time.deltaTime * transitionSpeedTime); 
}

然后添加一个条件,如果到达新的目的地点,则移动到下一个。

祝你好运!

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM