liko
    Preparing search index...

    Class Camera

    摄像机控制脚本,scene 上面默认自带 camera 脚本实例

    提供平滑的摄像机跟随功能,支持:

    • 目标跟随:自动跟随指定节点
    • 平滑缓动:避免摄像机移动过于突兀
    • 边界限制:防止摄像机移动超出指定区域
    • 轴向控制:可单独控制X/Y轴跟随
    • 位置偏移:支持在目标位置基础上添加偏移
    // 使用 scene 上面的 camera 脚本实例
    const camera = scene.camera;

    // 基本跟随
    camera.followTarget(playerNode);

    // 自定义跟随配置
    camera.followTarget(playerNode, {
    followY: false, // 仅跟随X轴
    offsetX: 100, // X轴偏移100像素
    immediate: true // 立即移动到目标位置
    });

    // 设置边界限制
    camera.setWorldBounds(new Rectangle(0, 0, 2000, 1200));

    // 调整跟随参数
    camera.smoothness = 0.05; // 更平滑的跟随
    camera.followEnabled = false; // 暂停跟随

    // 手动控制摄像机
    camera.lookAt(500, 300); // 平滑移动到指定位置
    camera.lookAt(500, 300, true); // 立即移动到指定位置

    // 获取摄像机状态
    const currentPos = camera.getCurrentPosition();
    const isReady = camera.isAtTarget();

    Hierarchy (View Summary)

    Index

    Constructors

    Properties

    followEnabled: boolean = true

    是否启用跟随 设置为 false 会暂停跟随,但不会停止平滑移动

    followX: boolean = true

    是否跟随X轴方向 设置为 false 时摄像机在X轴方向保持静止

    followY: boolean = true

    是否跟随Y轴方向 设置为 false 时摄像机在Y轴方向保持静止

    id: string = ''

    脚本唯一标识符,通常由编辑器指定

    label: string = ''

    脚本标签,用于快速识别和查找

    offsetX: number = 0

    X轴偏移量(相对于目标中心),正值向右偏移,负值向左偏移

    offsetY: number = 0

    Y轴偏移量(相对于目标中心),正值向下偏移,负值向上偏移

    smoothness: number = 0.1

    缓动系数 (0-1)

    • 0: 不跟随(摄像机保持静止)
    • 1: 立即跟随(无缓动效果)
    • 0.1: 平滑跟随(推荐值)

    注意:值越小跟随越平滑,但响应速度越慢

    Accessors

    • get awaked(): boolean

      脚本是否已被激活(添加到场景后触发)

      Returns boolean

    • get destroyed(): boolean

      脚本是否已被销毁

      Returns boolean

    • get enabled(): boolean

      脚本是否启用,禁用时不执行更新且触发 onDisable

      Returns boolean

    • set enabled(value: boolean): void

      Parameters

      • value: boolean

      Returns void

    • get scene(): undefined | IScene

      目标节点所在的场景引用(建议缓存为局部变量以提高性能)

      Returns undefined | IScene

    • get target(): T

      脚本挂载的目标节点,设置后触发 onCreate

      Returns T

    • set target(value: T): void

      Parameters

      • value: T

      Returns void

    • get worldBounds(): undefined | Rectangle

      摄像机移动边界约束(世界坐标系) 设置后会自动转换为场景坐标系约束

      注意:边界区域必须大于等于舞台尺寸,否则摄像机将被限制移动

      Returns undefined | Rectangle

    • set worldBounds(worldBounds: undefined | Rectangle): void

      Parameters

      Returns void

    Methods

    • 销毁脚本实例

      Returns void

      销毁后脚本将不再可用,系统会自动:

      • 触发 onDestroy 回调
      • 清除在 target、scene、stage、timer 上的所有监听
      • 解除与目标节点的关联
      • 设置 destroyed 状态为 true
      • 设置 enabled 状态为 false

      注意: 如果使用了 Timer.system 的监听,需要在 onDestroy 中手动清除

    • 设置摄像机跟随目标

      Parameters

      • target: LikoNode

        要跟随的节点

      • Optionaloptions: {
            followX?: boolean;
            followY?: boolean;
            immediate?: boolean;
            offsetX?: number;
            offsetY?: number;
        }

        跟随配置选项

        • OptionalfollowX?: boolean

          是否跟随X轴,默认true

        • OptionalfollowY?: boolean

          是否跟随Y轴,默认true

        • Optionalimmediate?: boolean

          是否立即同步到目标位置,默认true

        • OptionaloffsetX?: number

          X轴偏移量,默认0

        • OptionaloffsetY?: number

          Y轴偏移量,默认0

      Returns void

    • 获取当前摄像机位置(场景坐标系)

      Returns { x: number; y: number }

      包含x和y坐标的对象

    • 获取摄像机目标位置(场景坐标系)

      Returns { x: number; y: number }

      包含x和y坐标的对象

    • 检查摄像机是否已到达目标位置

      Parameters

      • threshold: number = 1

        判定阈值(像素),默认1像素

      Returns boolean

      是否已到达目标位置

      注意:当smoothness较小时,摄像机可能永远无法完全到达目标位置,建议使用合适的threshold值

    • 让摄像机查看指定位置

      Parameters

      • x: number

        X坐标(世界坐标)

      • y: number

        Y坐标(世界坐标)

      • immediate: boolean = false

        是否立即移动,默认false(使用平滑移动)

        注意:此方法不会改变跟随目标,如果有跟随目标,下一帧会继续跟随

      Returns void

    • 脚本第一次被激活时触发的回调函数

      Returns void

      只会触发一次,此时:

      • target 已经添加到场景中
      • 可以安全访问 scene 和 stage
      • 适合进行初始化设置和事件监听
    • 当脚本的 target 被设置时触发的回调函数

      Returns void

      生命周期中的第一个回调,此时:

      • target 已经设置完成
      • 可以访问 target 的属性和方法
      • 但 scene 和 stage 可能还未初始化
    • 脚本被销毁时触发的回调函数

      Returns void

      用于清理资源和释放引用,如:

      • 移除事件监听
      • 清理定时器
      • 释放对象引用

      注意: 系统会自动清理大部分监听,但使用 Timer.system 的监听需要手动清除

    • 每帧更新时触发的回调函数

      Parameters

      • delta: number

        距离上一帧的时间间隔(毫秒)

      Returns void

      用于实现脚本的主要逻辑,如:

      • 移动和动画
      • 状态检查和更新
      • 输入处理
      • 物理计算等
    • 批量设置脚本属性

      Parameters

      • Optionalprops: Record<string, unknown>

        要设置的属性键值对

      Returns this

      当前实例,支持链式调用

    • 设置摄像机移动边界

      Parameters

      • worldBounds: Rectangle

        边界矩形区域(世界坐标系)

        注意:边界区域应该大于等于舞台尺寸,否则摄像机移动会受到限制

      Returns void

    • 向同场景的其他脚本发送信号

      Parameters

      • key: string

        信号类型标识符

      • Optionalparams: Record<string, any>

        可选的信号参数对象

      Returns void

      发送的信号可以在同场景其他脚本的 onSignal 方法中被监听到,用于脚本间通信。

      注意:

      • 必须在脚本销毁前发送信号,否则无法正确触发
      • 信号只能在同一场景内传递
      • key 不区分大小写
    • 立即移动摄像机到目标位置(无缓动)

      注意:只有在设置了跟随目标的情况下才会生效

      Returns void

    • 执行脚本的更新逻辑

      Parameters

      • delta: number

        距离上一帧的时间间隔(毫秒)

      Returns void

      系统每帧调用一次,用于更新脚本状态。

      执行条件:

      • 脚本必须处于启用状态(enabled = true)
      • 脚本必须已经激活(awaked = true)
      • 如果是首次执行,会先触发 onAwake