Unity3d 使用InputSystem与Cinemachine实现鼠标右键按下旋转镜头
使用的unity版本是2021.3.10
一、组件添加和设置
1.两个插件的安装就不赘述,注意安装好后,在Project Settings\Player中启用InputSystem
2.Hierachy窗口中选择任意对象,编辑器上方菜单栏Component / Cinemachine / CinemachineFreelook,点击后自动创建虚拟相机对象和相关组件,设置好摄像机跟随目标 Follow 、朝向点Look At,其他设置看需要设置
3.重点:选择虚拟相机添加Cinemachine Input Provider 脚本组件,这个组件的作用是将input system的设置覆盖input manager,添加后CinemachineFreeLook默认轴设置会取消掉
二、InputAction
1.在Project窗口创建Input Actions
2.双击打开新创建的InputAction,打开编辑窗口
a.新建ActionMaps,任意命名,这里我命名为了CameraControl
b.选择CameraControl,添加Action,任意命名,这里我取名为XYAxis
c.选择XYAxis ,在最右侧栏中设置Action Properties,其中
Action Type设置为Pass Through,表示输入的是持续变化的量
重点:Control Type可以设置Delta 、vector2、Any
因为在ControlType下可添加的按钮path有限制:
适配鼠标、滚轮、摇杆,推荐:Any,
仅适配鼠标,推荐:Delta
适配鼠标、摇杆,推荐:Vector2
后续设置各个binding的path后,不要回头改变Control Type,否则可能会有游戏运动时切换相关按键,动作不生效的情况
设置如图 (忽略Scroll和RightStick的binding)
d.点击XYAxis,点击+号,选择Add Binding With One Modifer(可以理解为组合键),创建名为MouseRigthDrag的输入组合
e.分别设置Modifier和Binding的Binding Properties ,注意两个输入的设置不能交换,Binding必须设置为Delta[Mouse]
注意,这里我在Binging的Prcocessors,添加了Scale Vector2,它的作用是对Pass Though进行再处理,这里我把Y的Scale设置为0,这样鼠标在Y轴的变化就不会影响镜头,可以根据需要添加,可以改变灵敏度
至此就完成了按下鼠标右键,拖拽鼠标的Action设置,记得保存设置
3.选择虚拟相机,在Project窗户中将设置后的Action拖入Cinemachine Input Provider脚本中的XY Axis 即可
最后的交互性建议:鼠标按下,最好隐藏鼠标指针,松开后重置鼠标位置。这样的交互体验会更好,相关Api可以阅读官方文档中Cursor
作者:幕云汨水 https://www.bilibili.com/read/cv18768387 出处:bilibili