You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.25 23:31:20