主题
CameraUnit
CameraUnit 表示场景中的一台相机,通过 Position、Rotation、CFrame、Pitch、Yaw、Roll 描述其位置与朝向,通过 FieldOfView、FieldOfViewMode、ProjectionType、...
概览
CameraUnit 表示场景中的一台相机,通过 Position、Rotation、CFrame、Pitch、Yaw、Roll 描述其位置与朝向,通过 FieldOfView、FieldOfViewMode、ProjectionType、NearPlaneZ、ViewportSize、ClippingRange 控制成像参数。它还能借助 TrackingUnit、ExtraSubject、Focus、Distance 表达跟随与关注目标,并用 Priority、IsActive 参与多相机之间的展示竞争。相机可调用 GetPartsObscuringTarget 查询挡住目标点的单位,也可调用 ResetMovement 把相机运动状态复位。
继承自
SpaceUnit;可通过World:CreateUnit("CameraUnit", ...)创建;返回单个单位
函数
GetPartsObscuringTarget
签名:GetPartsObscuringTarget(castPoints: Array, ignoreList: Array) -> Array
获取遮挡相机视线的单位列表。该方法接收 castPoints 与 ignoreList 两个数组参数,返回遮挡视线的 Unit 数组。
| 参数 | 类型 | 说明 |
|---|---|---|
castPoints | Array | 射线检测目标点列表 |
ignoreList | Array | 忽略的单位列表 |
返回值 Array
读取目标点前的遮挡单位
lua
-- @runtime client
local camera = game:GetService('World').CurrentCamera
if camera == nil then return end
local ok, obscuringParts = pcall(function()
return camera:GetPartsObscuringTarget({ Vector3.New(0, 5, 20) }, {})
end)
obscuringParts = ok and obscuringParts or {}
for _, part in ipairs(obscuringParts) do
print('遮挡单位:', part.Name)
endResetMovement
签名:ResetMovement()
重置相机的移动状态。
重置当前相机移动
lua
-- @runtime client
local camera = game:GetService('World').CurrentCamera
if camera == nil then return end
camera:ResetMovement()属性
| 名称 | 类型 | 默认值 | 说明 |
|---|---|---|---|
Position | Vector3 | - | 相机的当前位置,类型为 Vector3;预设行为下会按参照更新此状态。 |
Rotation | Quaternion | - | 相机的当前朝向,类型为 Quaternion;预设行为下会按参照更新此状态。 |
Pitch | Float | - | 相机的俯仰角(单位:度),用于改变视角的上下角度,参考世界上方向。 |
Yaw | Float | - | 相机的偏航角(单位:度),用于改变视角的左右方向。 |
Roll | Float | - | 相机的滚转角(单位:度),沿前后方向旋转,用于倾斜画面。 |
TrackingUnit | Unit | - | CameraUnit 的跟随目标标记属性,类型为 Unit,用于标记当前相机跟随的目标,供相机行为参考。 |
ExtraSubject | Unit | - | CameraUnit 的额外关注目标属性,类型为 Unit,默认为空。当该属性非空时,在预设行为下相机的朝向状态会参考此目标。 |
FieldOfView | Float | - | 相机的垂直视场角,类型为 Float。 |
FieldOfViewMode | Int | - | 相机视场角模式,使用 Enums.FieldOfViewMode.Vertical、Enums.FieldOfViewMode.Diagonal 或 Enums.FieldOfViewMode.MaxAxis。 |
ProjectionType | CameraProjection | - | 相机的投影模式,类型为 CameraProjection,可取 Enums.CameraProjection.PERSPECTIVE、Enums.CameraProjection.ORTHOGRAPHIC 等取值。 |
NearPlaneZ | Float | - | 近裁剪平面距离,类型为 Float。 |
ViewportSize | Vector2 | - | 相机的视口尺寸(单位:像素),类型为 Vector2。 |
Focus | Vector3 | - | 相机聚焦点的 Vector3 坐标,用于确定相机朝向。 |
CFrame | CFrame | - | 相机的位置与朝向组合矩阵,类型为 CFrame,把相机的位置和旋转统一在同一份数据中。 |
Priority | Float | - | 相机的展示优先级,类型为 Float;全局展示优先级最高的相机会操作实际的渲染相机。 |
IsActive | Bool | - | 相机是否处于激活状态,类型为 Bool。 |
ClippingRange | Vector2 | - | 相机裁剪平面范围,类型为 Vector2,X 分量表示近裁剪面、Y 分量表示远裁剪面,契约标注的默认值为 [0.5, 15000]。 |
Distance | Float | - | 相机与跟随目标之间的距离,类型为 Float。 |
ScriptableBehaviour | Table | - | 相机的脚本行为,类型为 Table,用于以表格形式描述脚本控制下的相机行为参数。 |
Mode | CameraMode | - | 相机的行为模式,类型为 CameraMode,使用 Eggy 原生模式,可取 Enums.CameraMode 中的 NONE、EGGY、SCRIPTABLE、FOLLOW、BIND、SCREEN_ZONE、ORBIT 等取值。 |
CameraType | CameraType | - | 相机类型,类型为 CameraType,会按类型自动映射到 Mode;可取 Enums.CameraType 中的 Fixed、Attach、Watch、Track、Follow、Custom、Scriptable、Orbital 等取值。 |
DevCameraOcclusionMode | DevCameraOcclusionMode | - | 相机遮挡处理模式,使用 Enums.DevCameraOcclusionMode.Zoom、Enums.DevCameraOcclusionMode.Invisicam 或 Enums.DevCameraOcclusionMode.EggyHybrid。 |
事件
AfterUpdateState
签名:AfterUpdateState(delta: Float)
| 参数 | 类型 | 说明 |
|---|---|---|
delta | Float | 帧间隔时间 |
