当前位置:网站首页>Unity SKFramework框架(十七)、FreeCameraController 上帝视角/自由视角相机控制脚本
Unity SKFramework框架(十七)、FreeCameraController 上帝视角/自由视角相机控制脚本
2022-07-02 09:45:00 【CoderZ1010】
目录
一、简介
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:是否启用活动区域限制
xMinValue、xMaxValue:在x轴上的活动区域范围,当isRangeClamped为true时起作用
yMinValue、yMaxValue:在y轴上的活动区域范围,当isRangeClamped为true时起作用
zMinValue、zMaxValue:在z轴上的活动区域范围,当isRangeClamped为true时起作用
translateSpeed:平移的速度
boost:加速系数,当按下键盘左边的Shift键时会加速移动
positionLerpTime:坐标插值到目标值所需时长
rotationLerpTime:旋转插值到目标值所需时长
mouseMovementSensitivity:鼠标左键拖拽移动的灵敏度
mouseRotationSensitivityCurve:鼠标右键拖拽旋转的灵敏度
mouseScrollMoveSpeed:鼠标滚轮滚动时视角拉近拉远的速度
invertScrollDirection:是否反转鼠标滚轮滚动时视角拉近拉远的方向
enableAutoIdle:是否启用自动进入闲置状态
idleWaitTime:当用户在该时长内没有任何操作时,进入闲置状态,相机自动绕视角中心旋转,当enableAutoIdle为true时起作用
idleRotateSpeed:处于闲置状态时,绕视角中心旋转的速度
边栏推荐
- JS6day(DOM结点的查找、增加、删除。实例化时间,时间戳,时间戳的案例,重绘和回流)
- Linear DP acwing 902 Shortest editing distance
- Typora+docsify quick start
- Linear DP acwing 898 Number triangle
- ASP. Net MVC default configuration, if any, jumps to the corresponding program in the specified area
- spfa AcWing 851. SPFA finding the shortest path
- 染色法判定二分图 AcWing 860. 染色法判定二分图
- 哈希表 AcWing 840. 模拟散列表
- Ruby: how to copy variables without pointing to the same object- Ruby: how can I copy a variable without pointing to the same object?
- 绕过ObRegisterCallbacks需要驱动签名方法
猜你喜欢

The redis development document released by Alibaba covers all redis operations

线性DP AcWing 896. 最长上升子序列 II

Js3day (array operation, JS bubble sort, function, debug window, scope and scope chain, anonymous function, object, Math object)

LTC3307AHV 符合EMI标准,降压转换器 QCA7005-AL33 PHY

Day4 operator, self increasing, self decreasing, logical operator, bit operation, binary conversion decimal, ternary operator, package mechanism, document comment

难忘阿里,4面技术5面HR附加笔试面,走的真艰难真心酸

ArrayList与LinkedList效率的对比
![[error record] cannot open](/img/d3/0435ae698ad635be71729c7c047a22.jpg)
[error record] cannot open "XXX" because Apple cannot check whether it contains malware

js1day(输入输出语法,数据类型,数据类型转换,var和let区别)

Browser node event loop
随机推荐
Structured data, semi-structured data and unstructured data
Visual studio efficient and practical extension tools and plug-ins
Jerry's weather code table [chapter]
上手报告|今天聊聊腾讯目前在用的微服务架构
Hash table acwing 840 Simulated hash table
Js1day (input / output syntax, data type, data type conversion, VaR and let differences)
What data types does redis have and their application scenarios
Linear DP acwing 895 Longest ascending subsequence
Traverse entrylist method correctly
Counting class DP acwing 900 Integer partition
计数类DP AcWing 900. 整数划分
Docsify deploy IIS
Get started REPORT | today, talk about the microservice architecture currently used by Tencent
js2day(又是i++和++i,if语句,三元运算符,switch、while语句,for循环语句)
应用LNK306GN-TL 转换器、非隔离电源
Mongodb redis differences
Sensor adxl335bcpz-rl7 3-axis accelerometer complies with rohs/weee
阿里初面被两道编程题给干掉,再次内推终上岸(已拿电子offer)
Linear DP acwing 899 Edit distance
Js4day (DOM start: get DOM element content, modify element style, modify form element attributes, setinterval timer, carousel Map Case)