Skip to content
SpringArm

玩法 / SpringArm

SpringArm Class

弹簧臂

Table of contents

Accessors

collisionEnabled(): boolean client
启用碰撞
collisionInterpSpeed(): number client
碰撞插值速度,该值用于调整摄像机从碰撞状态恢复为非碰撞状态的速度,用于使摄像机碰撞效果更加平滑
length(): number client
弹簧臂长度
localTransform(): Transform client
弹簧臂相对变换
useControllerRotation(): boolean client
使用控制器控制旋转
worldTransform(): Transform client
弹簧臂世界变换
zoomDistanceRange(): Vector2 client
摄像机放缩距离范围
zoomEnabled(): boolean client
是否开启摄像机放缩距离
zoomScale(): number client
摄像机放缩距离输入比例

Accessors

collisionEnabled

get collisionEnabled(): boolean client

set collisionEnabled(value): void client

启用碰撞

Precautions

开启后弹簧臂才会检测碰撞的物体并收缩至离挂载目标最近的碰撞物体处 注意:要修改检测轨迹必须通过修改弹簧臂长度(TargetArmLength)以及targetOffset、slotOffset来实现,诸如直接修改弹簧臂位置的方式会导致偏移处不触发碰撞收缩

Returns

boolean

启用碰撞

Precautions

开启后弹簧臂才会检测碰撞的物体并收缩至离挂载目标最近的碰撞物体处 注意:要修改检测轨迹必须通过修改弹簧臂长度(TargetArmLength)以及targetOffset、slotOffset来实现,诸如直接修改弹簧臂位置的方式会导致偏移处不触发碰撞收缩

Parameters

value boolean是否启用
使用示例:将使用到的资源:"26950"拖入优先加载栏。创建一个名为"Example_SpringArm"的脚本,放置在对象栏中,打开脚本,输入以下代码保存,运行游戏,你将在场景中生成10根柱子用作触发摄像机弹簧杆碰撞,按下键盘“1”,启用/禁用摄像机弹簧杆碰撞。你可以看到禁用摄像机弹簧杆碰撞摄像机碰撞柱子不同的效果。代码如下:
ts
@Component
export default class Example_SpringArm extends Script {
    // 当脚本被实例后,会在第一帧更新前调用此函数
    protected onStart(): void {
        if(SystemUtil.isServer()) {
            // 生成10根柱子用作摄像机弹簧杆碰撞
            for (let i = 0;
i < 10;
i++) {
                GameObject.spawn<Model>("26950",{transform: new Transform(new Vector(100, i * 100, 0), Rotation.zero, Vector.one)});
            }
        }
        // 下列代码仅在客户端执行
        if(SystemUtil.isClient()) {
            // 获取当前摄像机
            let myCamera = Camera.currentCamera;
            // 添加一个按键方法:按下键盘“1”,启用/禁用摄像机弹簧杆碰撞
            InputUtil.onKeyDown(Keys.One, () => {
                myCamera.springArm.collisionEnabled = !myCamera.springArm.collisionEnabled;
                console.log("摄像机弹簧臂的碰撞 " + myCamera.springArm.collisionEnabled);
            });
            // 添加一个按键方法:按下键盘“2”,启用/禁用摄像机弹簧杆移动碰撞检测
            InputUtil.onKeyDown(Keys.Two, () => {
                myCamera.springArm.collisionEnabled = !myCamera.springArm.collisionEnabled;
                console.log("摄像机弹簧臂移动碰撞检测 " + myCamera.springArm.collisionEnabled);
            });
        }
    }
}
@Component
export default class Example_SpringArm extends Script {
    // 当脚本被实例后,会在第一帧更新前调用此函数
    protected onStart(): void {
        if(SystemUtil.isServer()) {
            // 生成10根柱子用作摄像机弹簧杆碰撞
            for (let i = 0;
i < 10;
i++) {
                GameObject.spawn<Model>("26950",{transform: new Transform(new Vector(100, i * 100, 0), Rotation.zero, Vector.one)});
            }
        }
        // 下列代码仅在客户端执行
        if(SystemUtil.isClient()) {
            // 获取当前摄像机
            let myCamera = Camera.currentCamera;
            // 添加一个按键方法:按下键盘“1”,启用/禁用摄像机弹簧杆碰撞
            InputUtil.onKeyDown(Keys.One, () => {
                myCamera.springArm.collisionEnabled = !myCamera.springArm.collisionEnabled;
                console.log("摄像机弹簧臂的碰撞 " + myCamera.springArm.collisionEnabled);
            });
            // 添加一个按键方法:按下键盘“2”,启用/禁用摄像机弹簧杆移动碰撞检测
            InputUtil.onKeyDown(Keys.Two, () => {
                myCamera.springArm.collisionEnabled = !myCamera.springArm.collisionEnabled;
                console.log("摄像机弹簧臂移动碰撞检测 " + myCamera.springArm.collisionEnabled);
            });
        }
    }
}

collisionInterpSpeed

get collisionInterpSpeed(): number client

set collisionInterpSpeed(value): void client

碰撞插值速度,该值用于调整摄像机从碰撞状态恢复为非碰撞状态的速度,用于使摄像机碰撞效果更加平滑

Precautions

默认值是2,生效范围0-20,值越大速度越快,当等于0时,会关闭摄像机碰撞插值效果; 该速度不是固定的,而是会由快变慢

Returns

number

碰撞插值速度,该值用于调整摄像机从碰撞状态恢复为非碰撞状态的速度,用于使摄像机碰撞效果更加平滑

Precautions

默认值是2,生效范围0-20,值越大速度越快,当等于0时,会关闭摄像机碰撞插值效果; 该速度不是固定的,而是会由快变慢

Parameters

value number是否启用
使用示例:将使用到的资源:"26950"拖入优先加载栏。创建一个名为"Example_SpringArm"的脚本,放置在对象栏中,打开脚本,输入以下代码保存,运行游戏,你将在场景中生成10根柱子用作触发摄像机弹簧杆碰撞,按下键盘“1”,启用/禁用摄像机弹簧杆碰撞。你可以看到禁用摄像机弹簧杆碰撞摄像机碰撞柱子不同的效果。代码如下:
ts
@Component
export default class Example_SpringArm extends Script {
    // 当脚本被实例后,会在第一帧更新前调用此函数
    protected onStart(): void {
        if(SystemUtil.isServer()) {
            // 生成10根柱子用作摄像机弹簧杆碰撞
            for (let i = 0;
i < 10;
i++) {
                GameObject.spawn<Model>("26950",{transform: new Transform(new Vector(100, i * 100, 0), Rotation.zero, Vector.one)});
            }
        }
        // 下列代码仅在客户端执行
        if(SystemUtil.isClient()) {
            // 获取当前摄像机
            let myCamera = Camera.currentCamera;
            // 添加一个按键方法:按下键盘“1”,启用/禁用摄像机弹簧杆碰撞
            InputUtil.onKeyDown(Keys.One, () => {
                myCamera.springArm.collisionEnabled = !myCamera.springArm.collisionEnabled;
                console.log("摄像机弹簧臂的碰撞 " + myCamera.springArm.collisionEnabled);
            });
            // 添加一个按键方法:按下键盘“2”,启用/禁用摄像机弹簧杆移动碰撞检测
            InputUtil.onKeyDown(Keys.Two, () => {
                myCamera.springArm.collisionEnabled = !myCamera.springArm.collisionEnabled;
                console.log("摄像机弹簧臂移动碰撞检测 " + myCamera.springArm.collisionEnabled);
            });
        }
    }
}
@Component
export default class Example_SpringArm extends Script {
    // 当脚本被实例后,会在第一帧更新前调用此函数
    protected onStart(): void {
        if(SystemUtil.isServer()) {
            // 生成10根柱子用作摄像机弹簧杆碰撞
            for (let i = 0;
i < 10;
i++) {
                GameObject.spawn<Model>("26950",{transform: new Transform(new Vector(100, i * 100, 0), Rotation.zero, Vector.one)});
            }
        }
        // 下列代码仅在客户端执行
        if(SystemUtil.isClient()) {
            // 获取当前摄像机
            let myCamera = Camera.currentCamera;
            // 添加一个按键方法:按下键盘“1”,启用/禁用摄像机弹簧杆碰撞
            InputUtil.onKeyDown(Keys.One, () => {
                myCamera.springArm.collisionEnabled = !myCamera.springArm.collisionEnabled;
                console.log("摄像机弹簧臂的碰撞 " + myCamera.springArm.collisionEnabled);
            });
            // 添加一个按键方法:按下键盘“2”,启用/禁用摄像机弹簧杆移动碰撞检测
            InputUtil.onKeyDown(Keys.Two, () => {
                myCamera.springArm.collisionEnabled = !myCamera.springArm.collisionEnabled;
                console.log("摄像机弹簧臂移动碰撞检测 " + myCamera.springArm.collisionEnabled);
            });
        }
    }
}

length

get length(): number client

set length(value): void client

弹簧臂长度

Precautions

调整摄像机与挂点之间的距离

Returns

number

弹簧臂长度

Precautions

调整摄像机与挂点之间的距离

Parameters

value number弹簧臂长度
使用示例:创建一个名为"Example_SpringArm_Length"的脚本,放置在对象栏中,打开脚本,输入以下代码保存,运行游戏,按住键盘“3”,增加摄像机弹簧臂的长度,按住键盘“4”,减少摄像机弹簧臂的长度。你将在场景中看到摄像机弹簧杆伸缩的效果。代码如下:
ts
@Component
export default class Example_SpringArm_Length extends Script {
    // 当脚本被实例后,会在第一帧更新前调用此函数
    protected onStart(): void {
        // 下列代码仅在客户端执行
        if(SystemUtil.isClient()) {
            // 获取当前摄像机
            let myCamera = Camera.currentCamera;
            // 添加一个按键方法:按下键盘“1”,切换摄像机弹簧臂的偏移(0, 100, 100),2秒后复原
            InputUtil.onKeyDown(Keys.One, () => {
                console.log("摄像机弹簧臂的本地变换 " + myCamera.springArm.localTransform);
                console.log("摄像机弹簧臂的世界变换 " + myCamera.springArm.worldTransform);
            });
            // 添加一个按键方法:按下键盘“2”,启用/禁用控制器操作摄像机的旋转5秒
            InputUtil.onKeyDown(Keys.Two, () => {
                myCamera.springArm.useControllerRotation = false;
                setTimeout(() => {
                    myCamera.springArm.useControllerRotation = true;
                }, 5000);
            });
            // 添加一个按键方法:按住键盘“3”,增加摄像机弹簧臂的长度
            InputUtil.onKeyPress(Keys.Three, () => {
                myCamera.springArm.length += 1;
            });
            // 添加一个按键方法:按住键盘“4”,减少摄像机弹簧臂的长度
            InputUtil.onKeyPress(Keys.Four, () => {
                myCamera.springArm.length -= 1;
            });
        }
    }
}
@Component
export default class Example_SpringArm_Length extends Script {
    // 当脚本被实例后,会在第一帧更新前调用此函数
    protected onStart(): void {
        // 下列代码仅在客户端执行
        if(SystemUtil.isClient()) {
            // 获取当前摄像机
            let myCamera = Camera.currentCamera;
            // 添加一个按键方法:按下键盘“1”,切换摄像机弹簧臂的偏移(0, 100, 100),2秒后复原
            InputUtil.onKeyDown(Keys.One, () => {
                console.log("摄像机弹簧臂的本地变换 " + myCamera.springArm.localTransform);
                console.log("摄像机弹簧臂的世界变换 " + myCamera.springArm.worldTransform);
            });
            // 添加一个按键方法:按下键盘“2”,启用/禁用控制器操作摄像机的旋转5秒
            InputUtil.onKeyDown(Keys.Two, () => {
                myCamera.springArm.useControllerRotation = false;
                setTimeout(() => {
                    myCamera.springArm.useControllerRotation = true;
                }, 5000);
            });
            // 添加一个按键方法:按住键盘“3”,增加摄像机弹簧臂的长度
            InputUtil.onKeyPress(Keys.Three, () => {
                myCamera.springArm.length += 1;
            });
            // 添加一个按键方法:按住键盘“4”,减少摄像机弹簧臂的长度
            InputUtil.onKeyPress(Keys.Four, () => {
                myCamera.springArm.length -= 1;
            });
        }
    }
}

localTransform

get localTransform(): Transform client

set localTransform(value): void client

弹簧臂相对变换

Returns

Transform

弹簧臂相对变换

Precautions

弹簧臂的相对变换,用于设置弹簧臂的相对位置、相对旋转以及相对缩放

Parameters

value Transform变换
使用示例:创建一个名为"Example_SpringArm_LocalTransform"的脚本,放置在对象栏中,打开脚本,输入以下代码保存,运行游戏,按下键盘“1”,切换摄像机弹簧臂的偏移(0, 100, 100),2秒后复原。你将在场景中看到摄像机偏移的效果并在控制台看到打印的变化后的摄像机弹簧臂的本地变换。代码如下:
ts
@Component
export default class Example_SpringArm_LocalTransform extends Script {
    // 当脚本被实例后,会在第一帧更新前调用此函数
    protected onStart(): void {
        // 下列代码仅在客户端执行
        if(SystemUtil.isClient()) {
            // 获取当前摄像机
            let myCamera = Camera.currentCamera;
            // 添加一个按键方法:按下键盘“1”,切换摄像机弹簧臂的偏移(0, 100, 100),2秒后复原
            InputUtil.onKeyDown(Keys.One, () => {
                console.log("摄像机弹簧臂的本地变换 " + myCamera.springArm.localTransform);
                console.log("摄像机弹簧臂的世界变换 " + myCamera.springArm.worldTransform);
            });
            // 添加一个按键方法:按下键盘“2”,启用/禁用控制器操作摄像机的旋转5秒
            InputUtil.onKeyDown(Keys.Two, () => {
                myCamera.springArm.useControllerRotation = false;
                setTimeout(() => {
                    myCamera.springArm.useControllerRotation = true;
                }, 5000);
            });
            // 添加一个按键方法:按住键盘“3”,增加摄像机弹簧臂的长度
            InputUtil.onKeyPress(Keys.Three, () => {
                myCamera.springArm.length += 1;
            });
            // 添加一个按键方法:按住键盘“4”,减少摄像机弹簧臂的长度
            InputUtil.onKeyPress(Keys.Four, () => {
                myCamera.springArm.length -= 1;
            });
        }
    }
}
@Component
export default class Example_SpringArm_LocalTransform extends Script {
    // 当脚本被实例后,会在第一帧更新前调用此函数
    protected onStart(): void {
        // 下列代码仅在客户端执行
        if(SystemUtil.isClient()) {
            // 获取当前摄像机
            let myCamera = Camera.currentCamera;
            // 添加一个按键方法:按下键盘“1”,切换摄像机弹簧臂的偏移(0, 100, 100),2秒后复原
            InputUtil.onKeyDown(Keys.One, () => {
                console.log("摄像机弹簧臂的本地变换 " + myCamera.springArm.localTransform);
                console.log("摄像机弹簧臂的世界变换 " + myCamera.springArm.worldTransform);
            });
            // 添加一个按键方法:按下键盘“2”,启用/禁用控制器操作摄像机的旋转5秒
            InputUtil.onKeyDown(Keys.Two, () => {
                myCamera.springArm.useControllerRotation = false;
                setTimeout(() => {
                    myCamera.springArm.useControllerRotation = true;
                }, 5000);
            });
            // 添加一个按键方法:按住键盘“3”,增加摄像机弹簧臂的长度
            InputUtil.onKeyPress(Keys.Three, () => {
                myCamera.springArm.length += 1;
            });
            // 添加一个按键方法:按住键盘“4”,减少摄像机弹簧臂的长度
            InputUtil.onKeyPress(Keys.Four, () => {
                myCamera.springArm.length -= 1;
            });
        }
    }
}

useControllerRotation

get useControllerRotation(): boolean client

set useControllerRotation(value): void client

使用控制器控制旋转

Precautions

开启后,使用控制器的旋转作为摄像机的旋转

Returns

boolean

使用控制器控制旋转

Precautions

开启后,使用控制器的旋转作为摄像机的旋转

Parameters

value boolean是否使用控制器控制旋转
使用示例:创建一个名为"Example_SpringArm_UseControllerRotation"的脚本,放置在对象栏中,打开脚本,输入以下代码保存,运行游戏,按下键盘“2”,启用/禁用控制器操作摄像机的旋转5秒。你将在场景中看到禁用控制器操作摄像机后的无法控制摄像机旋转的效果。代码如下:
ts
@Component
export default class Example_SpringArm_UseControllerRotation extends Script {
    // 当脚本被实例后,会在第一帧更新前调用此函数
    protected onStart(): void {
        // 下列代码仅在客户端执行
        if(SystemUtil.isClient()) {
            // 获取当前摄像机
            let myCamera = Camera.currentCamera;
            // 添加一个按键方法:按下键盘“1”,切换摄像机弹簧臂的偏移(0, 100, 100),2秒后复原
            InputUtil.onKeyDown(Keys.One, () => {
                console.log("摄像机弹簧臂的本地变换 " + myCamera.springArm.localTransform);
                console.log("摄像机弹簧臂的世界变换 " + myCamera.springArm.worldTransform);
            });
            // 添加一个按键方法:按下键盘“2”,启用/禁用控制器操作摄像机的旋转5秒
            InputUtil.onKeyDown(Keys.Two, () => {
                myCamera.springArm.useControllerRotation = false;
                setTimeout(() => {
                    myCamera.springArm.useControllerRotation = true;
                }, 5000);
            });
            // 添加一个按键方法:按住键盘“3”,增加摄像机弹簧臂的长度
            InputUtil.onKeyPress(Keys.Three, () => {
                myCamera.springArm.length += 1;
            });
            // 添加一个按键方法:按住键盘“4”,减少摄像机弹簧臂的长度
            InputUtil.onKeyPress(Keys.Four, () => {
                myCamera.springArm.length -= 1;
            });
        }
    }
}
@Component
export default class Example_SpringArm_UseControllerRotation extends Script {
    // 当脚本被实例后,会在第一帧更新前调用此函数
    protected onStart(): void {
        // 下列代码仅在客户端执行
        if(SystemUtil.isClient()) {
            // 获取当前摄像机
            let myCamera = Camera.currentCamera;
            // 添加一个按键方法:按下键盘“1”,切换摄像机弹簧臂的偏移(0, 100, 100),2秒后复原
            InputUtil.onKeyDown(Keys.One, () => {
                console.log("摄像机弹簧臂的本地变换 " + myCamera.springArm.localTransform);
                console.log("摄像机弹簧臂的世界变换 " + myCamera.springArm.worldTransform);
            });
            // 添加一个按键方法:按下键盘“2”,启用/禁用控制器操作摄像机的旋转5秒
            InputUtil.onKeyDown(Keys.Two, () => {
                myCamera.springArm.useControllerRotation = false;
                setTimeout(() => {
                    myCamera.springArm.useControllerRotation = true;
                }, 5000);
            });
            // 添加一个按键方法:按住键盘“3”,增加摄像机弹簧臂的长度
            InputUtil.onKeyPress(Keys.Three, () => {
                myCamera.springArm.length += 1;
            });
            // 添加一个按键方法:按住键盘“4”,减少摄像机弹簧臂的长度
            InputUtil.onKeyPress(Keys.Four, () => {
                myCamera.springArm.length -= 1;
            });
        }
    }
}

worldTransform

get worldTransform(): Transform client

set worldTransform(value): void client

弹簧臂世界变换

Precautions

弹簧臂的世界变换,用于设置弹簧臂的世界位置、世界旋转以及世界缩放

Returns

Transform

弹簧臂世界变换

Precautions

弹簧臂的世界变换,用于设置弹簧臂的世界位置、世界旋转以及世界缩放

Parameters

value Transform变换
使用示例:创建一个名为"Example_SpringArm_WorldTransform"的脚本,放置在对象栏中,打开脚本,输入以下代码保存,运行游戏,按下键盘“1”,切换摄像机弹簧臂的偏移(0, 100, 100),2秒后复原。你将在场景中看到摄像机偏移的效果并在控制台看到打印的变化后的摄像机弹簧臂的世界变换。代码如下:
ts
@Component
export default class Example_SpringArm_WorldTransform extends Script {
    // 当脚本被实例后,会在第一帧更新前调用此函数
    protected onStart(): void {
        // 下列代码仅在客户端执行
        if(SystemUtil.isClient()) {
            // 获取当前摄像机
            let myCamera = Camera.currentCamera;
            // 添加一个按键方法:按下键盘“1”,切换摄像机弹簧臂的偏移(0, 100, 100),2秒后复原
            InputUtil.onKeyDown(Keys.One, () => {
                console.log("摄像机弹簧臂的本地变换 " + myCamera.springArm.localTransform);
                console.log("摄像机弹簧臂的世界变换 " + myCamera.springArm.worldTransform);
            });
            // 添加一个按键方法:按下键盘“2”,启用/禁用控制器操作摄像机的旋转5秒
            InputUtil.onKeyDown(Keys.Two, () => {
                myCamera.springArm.useControllerRotation = false;
                setTimeout(() => {
                    myCamera.springArm.useControllerRotation = true;
                }, 5000);
            });
            // 添加一个按键方法:按住键盘“3”,增加摄像机弹簧臂的长度
            InputUtil.onKeyPress(Keys.Three, () => {
                myCamera.springArm.length += 1;
            });
            // 添加一个按键方法:按住键盘“4”,减少摄像机弹簧臂的长度
            InputUtil.onKeyPress(Keys.Four, () => {
                myCamera.springArm.length -= 1;
            });
        }
    }
}
@Component
export default class Example_SpringArm_WorldTransform extends Script {
    // 当脚本被实例后,会在第一帧更新前调用此函数
    protected onStart(): void {
        // 下列代码仅在客户端执行
        if(SystemUtil.isClient()) {
            // 获取当前摄像机
            let myCamera = Camera.currentCamera;
            // 添加一个按键方法:按下键盘“1”,切换摄像机弹簧臂的偏移(0, 100, 100),2秒后复原
            InputUtil.onKeyDown(Keys.One, () => {
                console.log("摄像机弹簧臂的本地变换 " + myCamera.springArm.localTransform);
                console.log("摄像机弹簧臂的世界变换 " + myCamera.springArm.worldTransform);
            });
            // 添加一个按键方法:按下键盘“2”,启用/禁用控制器操作摄像机的旋转5秒
            InputUtil.onKeyDown(Keys.Two, () => {
                myCamera.springArm.useControllerRotation = false;
                setTimeout(() => {
                    myCamera.springArm.useControllerRotation = true;
                }, 5000);
            });
            // 添加一个按键方法:按住键盘“3”,增加摄像机弹簧臂的长度
            InputUtil.onKeyPress(Keys.Three, () => {
                myCamera.springArm.length += 1;
            });
            // 添加一个按键方法:按住键盘“4”,减少摄像机弹簧臂的长度
            InputUtil.onKeyPress(Keys.Four, () => {
                myCamera.springArm.length -= 1;
            });
        }
    }
}

zoomDistanceRange

get zoomDistanceRange(): Vector2 client

set zoomDistanceRange(value): void client

摄像机放缩距离范围

Precautions

双指或鼠标滚轮放缩摄像机弹簧臂长度范围,默认值60~500

Returns

Vector2

摄像机放缩距离范围

Precautions

双指或鼠标滚轮放缩摄像机弹簧臂长度范围,默认值60~500

Parameters

valueVector2
使用示例:创建一个名为"Example_SpringArm_UseControllerRotation"的脚本,放置在对象栏中,打开脚本,输入以下代码保存,运行游戏,按下键盘“2”,启用/禁用控制器操作摄像机的旋转5秒.你将在场景中看到禁用控制器操作摄像机后的无法控制摄像机旋转的效果。代码如下:
ts
@Component
export default class Example_SpringArm_UseControllerRotation extends Script {
    // 当脚本被实例后,会在第一帧更新前调用此函数
    protected onStart(): void {
        // 下列代码仅在客户端执行
        if(SystemUtil.isClient()) {
            // 获取当前摄像机
            let myCamera = Camera.currentCamera;
            // 添加一个按键方法:按下键盘“1”,切换摄像机弹簧臂的偏移(0, 100, 100),2秒后复原
            InputUtil.onKeyDown(Keys.One, () => {
                console.log("摄像机弹簧臂的本地变换 " + myCamera.springArm.localTransform);
                console.log("摄像机弹簧臂的世界变换 " + myCamera.springArm.worldTransform);
            });
            // 添加一个按键方法:按下键盘“2”,启用/禁用控制器操作摄像机的旋转5秒
            InputUtil.onKeyDown(Keys.Two, () => {
                myCamera.springArm.useControllerRotation = false;
                setTimeout(() => {
                    myCamera.springArm.useControllerRotation = true;
                }, 5000);
            });
            // 添加一个按键方法:按住键盘“3”,增加摄像机弹簧臂的长度
            InputUtil.onKeyPress(Keys.Three, () => {
                myCamera.springArm.length += 1;
            });
            // 添加一个按键方法:按住键盘“4”,减少摄像机弹簧臂的长度
            InputUtil.onKeyPress(Keys.Four, () => {
                myCamera.springArm.length -= 1;
            });
        }
    }
}
@Component
export default class Example_SpringArm_UseControllerRotation extends Script {
    // 当脚本被实例后,会在第一帧更新前调用此函数
    protected onStart(): void {
        // 下列代码仅在客户端执行
        if(SystemUtil.isClient()) {
            // 获取当前摄像机
            let myCamera = Camera.currentCamera;
            // 添加一个按键方法:按下键盘“1”,切换摄像机弹簧臂的偏移(0, 100, 100),2秒后复原
            InputUtil.onKeyDown(Keys.One, () => {
                console.log("摄像机弹簧臂的本地变换 " + myCamera.springArm.localTransform);
                console.log("摄像机弹簧臂的世界变换 " + myCamera.springArm.worldTransform);
            });
            // 添加一个按键方法:按下键盘“2”,启用/禁用控制器操作摄像机的旋转5秒
            InputUtil.onKeyDown(Keys.Two, () => {
                myCamera.springArm.useControllerRotation = false;
                setTimeout(() => {
                    myCamera.springArm.useControllerRotation = true;
                }, 5000);
            });
            // 添加一个按键方法:按住键盘“3”,增加摄像机弹簧臂的长度
            InputUtil.onKeyPress(Keys.Three, () => {
                myCamera.springArm.length += 1;
            });
            // 添加一个按键方法:按住键盘“4”,减少摄像机弹簧臂的长度
            InputUtil.onKeyPress(Keys.Four, () => {
                myCamera.springArm.length -= 1;
            });
        }
    }
}

zoomEnabled

get zoomEnabled(): boolean client

set zoomEnabled(value): void client

是否开启摄像机放缩距离

Precautions

是否开启双指或鼠标滚轮放缩摄像机弹簧臂长度,默认开启,仅在当前摄像机弹簧臂长度处于摄像机放缩距离范围内时生效

Returns

boolean

是否开启摄像机放缩距离

Precautions

是否开启双指或鼠标滚轮放缩摄像机弹簧臂长度,默认开启,仅在当前摄像机弹簧臂长度处于摄像机放缩距离范围内时生效

Parameters

valueboolean
使用示例:创建一个名为"Example_SpringArm_UseControllerRotation"的脚本,放置在对象栏中,打开脚本,输入以下代码保存,运行游戏,按下键盘“2”,启用/禁用控制器操作摄像机的旋转5秒。你将在场景中看到禁用控制器操作摄像机后的无法控制摄像机旋转的效果。代码如下:
ts
@Component
export default class Example_SpringArm_UseControllerRotation extends Script {
    // 当脚本被实例后,会在第一帧更新前调用此函数
    protected onStart(): void {
        // 下列代码仅在客户端执行
        if(SystemUtil.isClient()) {
            // 获取当前摄像机
            let myCamera = Camera.currentCamera;
            // 添加一个按键方法:按下键盘“1”,切换摄像机弹簧臂的偏移(0, 100, 100),2秒后复原
            InputUtil.onKeyDown(Keys.One, () => {
                console.log("摄像机弹簧臂的本地变换 " + myCamera.springArm.localTransform);
                console.log("摄像机弹簧臂的世界变换 " + myCamera.springArm.worldTransform);
            });
            // 添加一个按键方法:按下键盘“2”,启用/禁用控制器操作摄像机的旋转5秒
            InputUtil.onKeyDown(Keys.Two, () => {
                myCamera.springArm.useControllerRotation = false;
                setTimeout(() => {
                    myCamera.springArm.useControllerRotation = true;
                }, 5000);
            });
            // 添加一个按键方法:按住键盘“3”,增加摄像机弹簧臂的长度
            InputUtil.onKeyPress(Keys.Three, () => {
                myCamera.springArm.length += 1;
            });
            // 添加一个按键方法:按住键盘“4”,减少摄像机弹簧臂的长度
            InputUtil.onKeyPress(Keys.Four, () => {
                myCamera.springArm.length -= 1;
            });
        }
    }
}
@Component
export default class Example_SpringArm_UseControllerRotation extends Script {
    // 当脚本被实例后,会在第一帧更新前调用此函数
    protected onStart(): void {
        // 下列代码仅在客户端执行
        if(SystemUtil.isClient()) {
            // 获取当前摄像机
            let myCamera = Camera.currentCamera;
            // 添加一个按键方法:按下键盘“1”,切换摄像机弹簧臂的偏移(0, 100, 100),2秒后复原
            InputUtil.onKeyDown(Keys.One, () => {
                console.log("摄像机弹簧臂的本地变换 " + myCamera.springArm.localTransform);
                console.log("摄像机弹簧臂的世界变换 " + myCamera.springArm.worldTransform);
            });
            // 添加一个按键方法:按下键盘“2”,启用/禁用控制器操作摄像机的旋转5秒
            InputUtil.onKeyDown(Keys.Two, () => {
                myCamera.springArm.useControllerRotation = false;
                setTimeout(() => {
                    myCamera.springArm.useControllerRotation = true;
                }, 5000);
            });
            // 添加一个按键方法:按住键盘“3”,增加摄像机弹簧臂的长度
            InputUtil.onKeyPress(Keys.Three, () => {
                myCamera.springArm.length += 1;
            });
            // 添加一个按键方法:按住键盘“4”,减少摄像机弹簧臂的长度
            InputUtil.onKeyPress(Keys.Four, () => {
                myCamera.springArm.length -= 1;
            });
        }
    }
}

zoomScale

get zoomScale(): number client

set zoomScale(value): void client

摄像机放缩距离输入比例

Precautions

控制双指距离或鼠标滚轮滚动变化单位距离时,摄像机弹簧臂长度变化大小,默认值1, 范围是0-10

Returns

number

摄像机放缩距离输入比例

Precautions

控制双指距离或鼠标滚轮滚动变化单位距离时,摄像机弹簧臂长度变化大小,默认值1, 范围是0-10

Parameters

valuenumber
使用示例:创建一个名为"Example_SpringArm_UseControllerRotation"的脚本,放置在对象栏中,打开脚本,输入以下代码保存,运行游戏,按下键盘“2”,启用/禁用控制器操作摄像机的旋转5秒。你将在场景中看到禁用控制器操作摄像机后的无法控制摄像机旋转的效果。代码如下:
ts
@Component
export default class Example_SpringArm_UseControllerRotation extends Script {
    // 当脚本被实例后,会在第一帧更新前调用此函数
    protected onStart(): void {
        // 下列代码仅在客户端执行
        if(SystemUtil.isClient()) {
            // 获取当前摄像机
            let myCamera = Camera.currentCamera;
            // 添加一个按键方法:按下键盘“1”,切换摄像机弹簧臂的偏移(0, 100, 100),2秒后复原
            InputUtil.onKeyDown(Keys.One, () => {
                console.log("摄像机弹簧臂的本地变换 " + myCamera.springArm.localTransform);
                console.log("摄像机弹簧臂的世界变换 " + myCamera.springArm.worldTransform);
            });
            // 添加一个按键方法:按下键盘“2”,启用/禁用控制器操作摄像机的旋转5秒
            InputUtil.onKeyDown(Keys.Two, () => {
                myCamera.springArm.useControllerRotation = false;
                setTimeout(() => {
                    myCamera.springArm.useControllerRotation = true;
                }, 5000);
            });
            // 添加一个按键方法:按住键盘“3”,增加摄像机弹簧臂的长度
            InputUtil.onKeyPress(Keys.Three, () => {
                myCamera.springArm.length += 1;
            });
            // 添加一个按键方法:按住键盘“4”,减少摄像机弹簧臂的长度
            InputUtil.onKeyPress(Keys.Four, () => {
                myCamera.springArm.length -= 1;
            });
        }
    }
}
@Component
export default class Example_SpringArm_UseControllerRotation extends Script {
    // 当脚本被实例后,会在第一帧更新前调用此函数
    protected onStart(): void {
        // 下列代码仅在客户端执行
        if(SystemUtil.isClient()) {
            // 获取当前摄像机
            let myCamera = Camera.currentCamera;
            // 添加一个按键方法:按下键盘“1”,切换摄像机弹簧臂的偏移(0, 100, 100),2秒后复原
            InputUtil.onKeyDown(Keys.One, () => {
                console.log("摄像机弹簧臂的本地变换 " + myCamera.springArm.localTransform);
                console.log("摄像机弹簧臂的世界变换 " + myCamera.springArm.worldTransform);
            });
            // 添加一个按键方法:按下键盘“2”,启用/禁用控制器操作摄像机的旋转5秒
            InputUtil.onKeyDown(Keys.Two, () => {
                myCamera.springArm.useControllerRotation = false;
                setTimeout(() => {
                    myCamera.springArm.useControllerRotation = true;
                }, 5000);
            });
            // 添加一个按键方法:按住键盘“3”,增加摄像机弹簧臂的长度
            InputUtil.onKeyPress(Keys.Three, () => {
                myCamera.springArm.length += 1;
            });
            // 添加一个按键方法:按住键盘“4”,减少摄像机弹簧臂的长度
            InputUtil.onKeyPress(Keys.Four, () => {
                myCamera.springArm.length -= 1;
            });
        }
    }
}