Unity SKFramework框架(十七)、FreeCameraController 上帝视角/自由视角相机控制脚本

目录

一、简介

二、功能

1.键盘控制平移

2.鼠标控制平移

3.视角拉近拉远

4.绕视角中心旋转

5.视角聚焦

6.活动区域限制

7.闲置时绕视角中心旋转

三、核心变量 


一、简介

FreeCameraController是用于上帝视角、自由视角的相机控制脚本,同时支持Input System Package(New)和Input Manager(Old)新、旧两种输入系统。

该工具已经上传至我的框架SKFramework中的开发工具箱,如图所示。

框架已经在Github开源,地址:https://github.com/136512892/SKFramework

二、功能

1.键盘控制平移

通过键盘W、S、A、D、E、Q按键分别实现向前、后、左、右、上、下方向的平移:

2.鼠标控制平移

通过按住鼠标左键进行拖拽实现平移:

3.视角拉近拉远

通过鼠标滚轮的滚动实现视角的拉近或拉远:

4.绕视角中心旋转

通过按住鼠标右键并拖拽实现视角绕中心点旋转:

5.视角聚焦

通过调用Focus函数实现视角的聚焦:

/// <summary>
/// 聚焦
/// </summary>
/// <param name="position">目标位置</param>
/// <param name="rotation">目标旋转</param>
/// <param name="duration">时长</param>
public void Focus(Vector3 position, Vector3 rotation, float duration);

6.活动区域限制

通过启用IsRangeClamped来实现活动范围的限制:

通过设置xMinValue...zMaxValue调整活动范围,如图所示,绿色线条形成的区域即活动的范围,相机运动不会超出该区域:

7.闲置时绕视角中心旋转

当用户在一定的时长内没有任何操作时,进入闲置状态,相机自动绕视角中心旋转,该功能通过启用enableAutoIdle实现:

三、核心变量 

toggle:控制系统的开关

isRangeClamped:是否启用活动区域限制

xMinValuexMaxValue:在x轴上的活动区域范围,当isRangeClamped为true时起作用

yMinValueyMaxValue:在y轴上的活动区域范围,当isRangeClamped为true时起作用

zMinValuezMaxValue:在z轴上的活动区域范围,当isRangeClamped为true时起作用

translateSpeed:平移的速度

boost:加速系数,当按下键盘左边的Shift键时会加速移动

positionLerpTime:坐标插值到目标值所需时长

rotationLerpTime:旋转插值到目标值所需时长

mouseMovementSensitivity:鼠标左键拖拽移动的灵敏度

mouseRotationSensitivityCurve:鼠标右键拖拽旋转的灵敏度

mouseScrollMoveSpeed:鼠标滚轮滚动时视角拉近拉远的速度

invertScrollDirection:是否反转鼠标滚轮滚动时视角拉近拉远的方向

enableAutoIdle:是否启用自动进入闲置状态

idleWaitTime:当用户在该时长内没有任何操作时,进入闲置状态,相机自动绕视角中心旋转,当enableAutoIdle为true时起作用

idleRotateSpeed:处于闲置状态时,绕视角中心旋转的速度

猜你喜欢

转载自blog.csdn.net/qq_42139931/article/details/125150480