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

Unity 3D:如何通过鼠标滚轮控制相机沿固定路径移动?

实现鼠标滚轮控制Cinemachine相机沿航点移动

核心思路

用Cinemachine的CinemachineDollyCart绑定预设路径,监听鼠标滚轮输入,每次滚动切换到下一个/上一个航点,通过控制Cart的位置值实现相机移动。

步骤实现

1. 先搭好场景

  • 在Unity中创建CinemachinePath,添加多个路径点(航点),摆好相机要走的路线
  • 新建空物体作为相机容器,挂载CinemachineVirtualCamera和CinemachineDollyCart组件
  • 将CinemachinePath拖入CinemachineDollyCart的Path字段
  • 给CinemachineVirtualCamera的Follow和LookAt设置目标(直接绑定相机容器就行)

2. 写控制脚本

新建WheelControlDolly.cs脚本,挂载到相机容器上:

using UnityEngine;
using Cinemachine;

public class WheelControlDolly : MonoBehaviour
{
    [SerializeField] private CinemachineDollyCart dollyCart;
    [SerializeField] private float moveSpeed = 10f; // 调整这个值控制移动快慢
    private int currentWaypoint = 0;
    private float[] waypointPositions;

    void Start()
    {
        // 提前获取所有航点在路径上的位置值(0到1区间,按路径顺序)
        waypointPositions = new float[dollyCart.Path.m_Waypoints.Count];
        for (int i = 0; i < waypointPositions.Length; i++)
        {
            waypointPositions[i] = dollyCart.Path.GetPathPosition(i);
        }
        // 初始定位到第一个航点
        dollyCart.m_Position = waypointPositions[currentWaypoint];
    }

    void Update()
    {
        // 监听鼠标滚轮输入
        float scroll = Input.GetAxis("Mouse ScrollWheel");
        if (Mathf.Abs(scroll) < 0.01f) return; // 过滤误触的微小滚动

        if (scroll > 0)
        {
            // 滚轮向上,切下一个航点
            currentWaypoint = Mathf.Min(currentWaypoint + 1, waypointPositions.Length - 1);
        }
        else
        {
            // 滚轮向下,切上一个航点
            currentWaypoint = Mathf.Max(currentWaypoint - 1, 0);
        }

        // 平滑移动到目标航点,想要瞬间跳转就改成直接赋值
        dollyCart.m_Position = Mathf.Lerp(dollyCart.m_Position, waypointPositions[currentWaypoint], moveSpeed * Time.deltaTime);
    }
}

3. 配置脚本

  • 将挂载了CinemachineDollyCart的物体拖入脚本的dollyCart字段
  • 调整moveSpeed数值:越大相机移动到航点的速度越快

额外说明

  • 如果想要相机瞬间跳转到航点,删掉Lerp代码,直接写dollyCart.m_Position = waypointPositions[currentWaypoint];
  • 确保CinemachinePath的路径点顺序和你想要的移动顺序一致
  • 测试时可以把路径点间距拉大,方便观察滚动效果

内容的提问来源于stack exchange,提问作者seanie

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.29 10:55:08