这里会显示出您选择的修订版和当前版本之间的差别。
两侧同时换到之前的修订记录前一修订版后一修订版 | 前一修订版 | ||
scripting:client:camera [2023/08/24 23:50] – bibiboxs | scripting:client:camera [2024/05/16 03:53] (当前版本) – bibiboxs | ||
---|---|---|---|
行 1: | 行 1: | ||
< | < | ||
# Client/ | # Client/ | ||
+ | |||
+ | 在`Camera`类操作中,开发者可修改**玩家本地状态**下的相机属性。 | ||
+ | |||
+ | 有关本文档的属性**绝大多数**属于场景生命周期,再切换世界\场景后将会重置设定。 | ||
## Property | ## Property | ||
+ | |||
+ | ### Camera.Mode | ||
+ | |||
+ | > 设置本地玩家游戏视角模式(默认2.5D、第三人称)。 | ||
+ | > | ||
+ | > 开发者可根据游戏需求,随时在代码中动态切换模式及配套的属性,需要注意的是,**不同视角模式可能有不同的属性控制,此文档中的属性并非完全适用于全部模式==(有些属性在特定模式下修改可能不会有效果)==。** | ||
+ | > | ||
+ | > **不同游戏视角会衍生不同的游戏效果,例如2.5D视角主要是平面射击,第三人称视角则是根据准星自由射击、交互等。** | ||
+ | > | ||
+ | > **==注意:此属性的修改会改变`Camera`其他属性,已达到最终的视角预制效果(例如`Distance\Sway\Offset`等属性),如果开发者有多个自定义视角的修改需求,建议将修改视角封装成多个方法(如下代码示例)。==** | ||
+ | |||
+ | ```javascript | ||
+ | Camera.Mode = 0; | ||
+ | ``` | ||
+ | |||
+ | | ID | 视角模式 | ||
+ | | ---- | ------------------------------------------------------------ | -------------------------------------------------- | | ||
+ | | 0 | 默认视角,2.5D鸟瞰视角< | ||
+ | | 1 | 第一人称视角< | ||
+ | | 2 | 第三人称视角< | ||
+ | |||
+ | ```javascript | ||
+ | // | ||
+ | function ChangeCameraMode0() | ||
+ | { | ||
+ | Camera.Mode = 1; | ||
+ | Camera.Sway = 0; | ||
+ | } | ||
+ | |||
+ | // | ||
+ | function ChangeCameraMode1() | ||
+ | { | ||
+ | Camera.Mode = 2; | ||
+ | Camera.Sway = 1.0; // | ||
+ | Camera.Offset = Vector(0.2, 0.8, 0); | ||
+ | } | ||
+ | ``` | ||
+ | |||
+ | |||
+ | |||
+ | ### Camera.Pos | ||
+ | |||
+ | > 获取(只读)相机(游戏的眼睛)世界空间位置。 | ||
+ | |||
+ | ```javascript | ||
+ | Camera.Pos: Vector | ||
+ | ``` | ||
+ | |||
+ | |||
+ | |||
+ | ### Camera.EulerAngle | ||
+ | |||
+ | > 获取(只读)相机(游戏的眼睛)世界空间角度。 | ||
+ | |||
+ | ```javascript | ||
+ | Camera.EulerAngle: | ||
+ | ``` | ||
+ | |||
+ | |||
### Camera.Target | ### Camera.Target | ||
行 36: | 行 99: | ||
```javascript | ```javascript | ||
Camera.Offset = Vector(0, 2, 0); // | Camera.Offset = Vector(0, 2, 0); // | ||
+ | ``` | ||
+ | |||
+ | |||
+ | |||
+ | ### Camera.SlowMode | ||
+ | |||
+ | > 设置相机**慢动作模式**开关,激活后相机将以慢速延迟移动视角。 | ||
+ | > | ||
+ | > **注意:此模式更适合用于`FreeMode`自由模式,在漫游模式下鼠标将会差值慢速移动,适合拍摄视频、漫游浏览。** | ||
+ | |||
+ | ```javascript | ||
+ | Camera.SlowMode = false; //bool | ||
+ | ``` | ||
+ | |||
+ | |||
+ | |||
+ | ### Camera.FreeMode | ||
+ | |||
+ | > 设置相机**自由漫游模式**开关,激活后相机将允许玩家自由移动视角(移动、旋转速度同步受到`Camera`属性影响)。 | ||
+ | > | ||
+ | > **注意:此模式优先级最高,启用后将暂时屏蔽其他相机模式,同时开启模式并不会屏蔽控制角色移动(如果存在操纵角色\载具,仍然可进行移动等行为,如果不希望这样,可以自行编写相关冻结逻辑(Frozen),以达到漫游模式时停止控制)。** | ||
+ | |||
+ | ```javascript | ||
+ | Camera.FreeMode = false; //bool | ||
``` | ``` | ||
行 44: | 行 131: | ||
> 设置相机**向前跟随模式**开关,激活后相机将始终向`Target`正前角度靠近。 | > 设置相机**向前跟随模式**开关,激活后相机将始终向`Target`正前角度靠近。 | ||
> | > | ||
- | > **注意:此选项需要`Camera.Target`存在目标才有意义。** | + | > **注意:此选项需要`Camera.Target`存在目标才有意义。此功能只在`RoamPoint`或`BirdView`模式下生效。** |
+ | > | ||
+ | > **(如果希望在第一人称\第三人称使用类似功能,你可能找的是`Camera.AutoFix`)** | ||
```javascript | ```javascript | ||
Camera.ForwardMode = false; //bool | Camera.ForwardMode = false; //bool | ||
``` | ``` | ||
+ | |||
行 58: | 行 148: | ||
Camera.AutoDistance = true; //bool | Camera.AutoDistance = true; //bool | ||
``` | ``` | ||
+ | |||
+ | |||
+ | |||
+ | ### Camera.AutoFix | ||
+ | |||
+ | > 设置相机**自动修正功能**开关,此功能可以修正有关相机的便捷化效果。 | ||
+ | > | ||
+ | > **例如:玩家操作空闲超过X秒后,相机自动旋转至角色或载具的正前方。** | ||
+ | |||
+ | ```javascript | ||
+ | Camera.AutoFix = true; //bool | ||
+ | ``` | ||
+ | |||
+ | |||
+ | |||
+ | ### Camera.RotateSpeed | ||
+ | |||
+ | > 设置相机**旋转角度**的差值速度,默认为`2.0`。 | ||
+ | > | ||
+ | |||
+ | ```javascript | ||
+ | Camera.RotateSpeed = 2; | ||
+ | ``` | ||
+ | |||
行 83: | 行 197: | ||
> 设置相机跟随对象的距离,默认为`10.0`。 | > 设置相机跟随对象的距离,默认为`10.0`。 | ||
+ | > | ||
+ | > **注意:在开启`AutoDistance`属性后,因为其自动距离机制,可能不会完全按照`Distance`所设定的距离执行。** | ||
```javascript | ```javascript | ||
行 92: | 行 208: | ||
### Camera.DistanceSpeed | ### Camera.DistanceSpeed | ||
- | > 设置相机跟随对象距离的差值速度,默认为`1.0`。 | + | > 设置相机跟随**对象距离**的差值速度,默认为`1.0`。 |
> | > | ||
> (设置新的`Distance`值后多久到达新距离)。 | > (设置新的`Distance`值后多久到达新距离)。 | ||
行 98: | 行 214: | ||
```javascript | ```javascript | ||
Camera.DistanceSpeed = 1; | Camera.DistanceSpeed = 1; | ||
+ | ``` | ||
+ | |||
+ | |||
+ | |||
+ | ### Camera.FOV | ||
+ | |||
+ | > 设置相机FOV(默认`70.0`)。 | ||
+ | > | ||
+ | |||
+ | ```javascript | ||
+ | Camera.FOV = 70.0; | ||
``` | ``` | ||
行 104: | 行 231: | ||
### Camera.SmoothTime | ### Camera.SmoothTime | ||
- | > 设置相机跟随对象的平滑(移动)间隔速度,默认为`0.2`(数值越小,速度越快)。 | + | > 设置相机跟随对象的平滑(移动)间隔速度,默认`0.2`(数值越小,速度越快)。 |
```javascript | ```javascript | ||
Camera.SmoothTime = 0.2; | Camera.SmoothTime = 0.2; | ||
+ | ``` | ||
+ | |||
+ | |||
+ | |||
+ | ### Camera.Flip | ||
+ | |||
+ | > 设置相机临时反转模式,默认为`false`,此功能仅在**第一人称、第三人称**生效,并且可通过玩家【鼠标中键】**优先**开关。 | ||
+ | |||
+ | ```javascript | ||
+ | Camera.Flip = false; | ||
``` | ``` | ||
行 154: | 行 291: | ||
### Camera.LensLUT | ### Camera.LensLUT | ||
- | > 设置相机镜头调色主题,默认范围`0~10`,设置为`0`则表示默认主题。 | + | > 设置**相机镜头色彩主题**,默认范围`0~10`,设置为`0`则表示默认主题。 |
+ | > | ||
+ | > **注意:当脚本使用此属性修改色彩主题后,优先级将提升至最高,玩家通过游戏选项修改的主题将被忽略,直到下次加载新的世界场景。** | ||
```javascript | ```javascript | ||
行 169: | 行 308: | ||
Camera.IsInWater: | Camera.IsInWater: | ||
``` | ``` | ||
+ | |||
+ | |||
+ | |||
+ | ### Camera.LookAtMode | ||
+ | |||
+ | > 获取相机是否正在`LookAt`焦点模式(使用`StartLookAt()`激活)。 | ||
+ | |||
+ | ```javascript | ||
+ | Camera.LookAtMode: | ||
+ | ``` | ||
+ | |||
## Static Function | ## Static Function | ||
+ | |||
+ | ### Camera.Focus() | ||
+ | |||
+ | > 立即将相机定位到追踪目标位置,适用于希望立即到相机目标位置(不需要平移效果)时调用。 | ||
+ | |||
+ | ```javascript | ||
+ | function Camera.Focus() | ||
+ | ``` | ||
+ | |||
+ | |||
+ | |||
+ | ### Camera.AddRoamPoint() | ||
+ | |||
+ | > 增加一个相机漫游点**(相机优先级更高,但相比`FreeMode`低)**。 | ||
+ | > | ||
+ | > 如果相机漫游点数量> | ||
+ | > | ||
+ | > **注意:相机漫游运动仍然使用`Target`焦点跟随的方式,==因此漫游坐标并非实际相机本地位置,而是相机看向的【焦点位置】,`Distance`等属性仍然是有效的。==** | ||
+ | |||
+ | ```javascript | ||
+ | function Camera.AddRoamPoint( point: Vector ) | ||
+ | ``` | ||
+ | |||
+ | |||
+ | |||
+ | ### Camera.RemoveRoamPoint() | ||
+ | |||
+ | > 移除指定索引的相机漫游点(如果相机漫游点数量< | ||
+ | |||
+ | ```javascript | ||
+ | function Camera.RemoveRoamPoint( index: int ) | ||
+ | ``` | ||
+ | |||
+ | |||
+ | |||
+ | ### Camera.GetRoamPoint() | ||
+ | |||
+ | > 根据指定索引获取相机的漫游点坐标。 | ||
+ | |||
+ | ```javascript | ||
+ | function Camera.GetRoamPoint( index: int ): Vector | ||
+ | ``` | ||
+ | |||
+ | |||
+ | |||
+ | ### Camera.GetCurrentRoamIndex() | ||
+ | |||
+ | > 获取相机当前漫游点目标索引。 | ||
+ | |||
+ | ```javascript | ||
+ | function Camera.GetCurrentRoamIndex(): | ||
+ | ``` | ||
+ | |||
+ | |||
+ | |||
+ | ### Camera.GetRoamPointCount() | ||
+ | |||
+ | > 获取当前相机漫游点的数量(如果相机漫游点数量< | ||
+ | |||
+ | ```javascript | ||
+ | function Camera.GetRoamPointCount(): | ||
+ | ``` | ||
+ | |||
+ | |||
+ | |||
+ | ### Camera.ClearAllRoamPoint() | ||
+ | |||
+ | > 清空当前相机全部漫游点(自动关闭漫游模式)。 | ||
+ | |||
+ | ```javascript | ||
+ | function Camera.ClearAllRoamPoint() | ||
+ | ``` | ||
+ | |||
+ | |||
### Camera.SetImageEffectActive() | ### Camera.SetImageEffectActive() | ||
行 223: | 行 447: | ||
function Camera.GetImageEffectProperty( id: int, option: int ): any | float | function Camera.GetImageEffectProperty( id: int, option: int ): any | float | ||
``` | ``` | ||
+ | |||
+ | |||
+ | |||
+ | ### Camera.SetCinematicBorder() | ||
+ | |||
+ | > 设置屏幕电影模式边框开关,**在场景切换时不会重置**。 | ||
+ | |||
+ | ```javascript | ||
+ | function Camera.SetCinematicBorder( active: bool, time: float = 1.0 ) | ||
+ | ``` | ||
+ | |||
+ | |||
+ | |||
+ | ### Camera.GetCinematicBorder() | ||
+ | |||
+ | > 获取屏幕电影模式边框开关。 | ||
+ | |||
+ | ```javascript | ||
+ | function Camera.GetCinematicBorder(): | ||
+ | ``` | ||
+ | |||
+ | |||
+ | |||
+ | ### Camera.Shake() | ||
+ | |||
+ | > 激活一次相机Shake抖动效果。 | ||
+ | |||
+ | ```javascript | ||
+ | function Camera.Shake( strength: float = 1.0, time: float = 1.0 ) | ||
+ | ``` | ||
+ | |||
+ | |||
+ | |||
+ | ### Camera.Punch() | ||
+ | |||
+ | > 激活一次相机Punch力量抖动效果。 | ||
+ | |||
+ | ```javascript | ||
+ | function Camera.Punch( strength: float = 1.0, time: float = 1.0 ) | ||
+ | ``` | ||
+ | |||
+ | |||
+ | |||
+ | ### Camera.Shock() | ||
+ | |||
+ | > 激活一次相机Shock冲击抖动效果。 | ||
+ | |||
+ | ```javascript | ||
+ | function Camera.Shock( strength: float = 1.0, time: float = 1.0 ) | ||
+ | ``` | ||
+ | |||
+ | |||
+ | |||
+ | ### Camera.StartLookAt() | ||
+ | |||
+ | > 激活相机`LookAt`观察焦点模式,可用于让相机从A点看向B点。 | ||
+ | > | ||
+ | > 注意:此方法改变的是相机本身,而不是传统的跟随焦点。 | ||
+ | |||
+ | ```javascript | ||
+ | function Camera.StartLookAt( start: Vector, end: Vector, time: float = 1.0 ) | ||
+ | ``` | ||
+ | |||
+ | |||
+ | |||
+ | ### Camera.StopLookAt() | ||
+ | |||
+ | > 取消相机`LookAt`观察焦点模式。 | ||
+ | |||
+ | ```javascript | ||
+ | function Camera.StopLookAt() | ||
+ | ``` | ||
+ | |||