Unity Spline对象双向移动旋转异常问题求助
Unity Spline 正反移动及旋转问题
我在做Unity Spline相关实验,已经用Spline Animate脚本实现了对象沿路径正常移动,但需要让对象既能沿路径顺时针(正向)移动,也能逆时针(反向)移动,同时保证旋转方向正确。
试过两种方案都有问题:
- 用Reverse Spline Flow选项:只会让对象转向相反方向,移动方向还是正向,而且切换时对象会被重置到Spline起点,不符合需求。
- 自己写了不依赖Spline Animate的C#脚本,通过设置正负速度控制正反移动,但反向移动时,对象到达Spline起点后就停止了,没法继续循环移动。
附上移动脚本:
using System.Collections; using System.Collections.Generic; using UnityEngine; using UnityEngine.Splines; using Unity.Mathematics; public class Motor : MonoBehaviour { public SplineContainer spline; public float speed = 1f; float distancePercentage = 0f; float splineLength; private void Start() { splineLength = spline.CalculateLength(); } void Update() { distancePercentage += speed * Time.deltaTime / splineLength; Vector3 currentPosition = spline.EvaluatePosition(distancePercentage); transform.position = currentPosition; if (distancePercentage > 1f) { distancePercentage = 0f; } Vector3 nextPosition = spline.EvaluatePosition(distancePercentage - 0.05f); Vector3 direction = currentPosition - nextPosition; transform.rotation = Quaternion.LookRotation(direction, transform.up); } }

恳请各位帮忙排查解决。
内容的提问来源于stack exchange,提问作者qwdza54
相关产品推荐
相关产品推荐

