diff --git a/Role/move/2D/SimplePathfindingDoTween.cs b/Role/move/2D/SimplePathfindingDoTween.cs index 802f6a0..605b1a0 100644 --- a/Role/move/2D/SimplePathfindingDoTween.cs +++ b/Role/move/2D/SimplePathfindingDoTween.cs @@ -22,35 +22,42 @@ public class SimplePathfindingDoTween : Fun [Header("旋转的动画")]public GameObject obj; - public void MoveToNextWaypoint(GameObject gameObject,float moveSpeed) - { + public void MoveToNextWaypoint(GameObject gameObject, float moveSpeed) + { if (currentWaypointIndex < waypoints._waypoints.Count) { - // 获取下一个路径点 - Transform targetWaypoint = waypoints._waypoints[waypoints._waypoints.Count-1]; + // 获取目标路径点 + Transform targetWaypoint = waypoints._waypoints[waypoints._waypoints.Count - 1]; // 计算路径点之间的距离 float distance = Vector3.Distance(gameObject.transform.position, targetWaypoint.position); // 根据设置的速度计算时间 - float timeToReach = distance*10 / moveSpeed; // 根据速度控制匀速移动的时间 - - // 使用DoTween的DOPath来平滑地移动到目标位置 + float timeToReach = distance * 10 / moveSpeed; // 根据速度控制匀速移动的时间 + + // 获取路径的所有点 Vector3[] path = new Vector3[waypoints._waypoints.Count - currentWaypointIndex]; for (int i = 0; i < path.Length; i++) { path[i] = waypoints._waypoints[currentWaypointIndex + i].position; + if (i!=0&&i!= path.Length-1) + { + // 在Y轴方向上做一定的随机改变,可以设置一个波动范围 + path[i].y += Random.Range(-0.1f, 0.1f); // 修改 Y 值的波动范围 + } + } + // 使用DoTween的DOPath来平滑地移动 gameObject.transform.DOPath(path, timeToReach, PathType.Linear) - .SetEase(Ease.Linear).OnUpdate(() => RotateTowardsTarget()); // 每次更新时调整旋转 + .SetEase(Ease.Linear) + .OnUpdate(() => RotateTowardsTarget()); // 每次更新时调整旋转 } else { Debug.Log("到达终点!"); } - } public void PauseAnimation() {