• Camera 摄像机
    • 实例

    Camera 摄像机

    摄像机组件在制作卷轴或是其他需要移动屏幕的游戏时比较有用,在没有摄像机组件的情况下,卷轴游戏都是通过移动场景节点或是游戏根节点来实现的,这样将会导致大量节点的矩阵都需要重新计算,效率自然会有所降低,而使用摄像机是直接将摄像机的矩阵信息在渲染阶段统一处理,将会比移动节点来移动屏幕更加高效。

    摄像机组件提供了两个属性来供用户设置:

    • targets - 指定摄像机会拍摄哪些节点,即摄像机会影响哪些节点。
    • zoomRatio - 指定摄像机的缩放比例, 值越大显示的图像越大。

    摄像机组件将会随着他依附的节点进行移动,可以想象成我们举着摄像机跟随者摄像机的节点移动,而这个摄像机只会拍摄他的 targets 目标,摄像机组件拍摄的范围即是设备屏幕大小。

    实例

    我们用一个场景实例来解释摄像机组件怎么使用。

    假设我们在做一个物理游戏,需要 physics 节点,tiled map 做背景,hero 做主角,我们的摄像机需要跟随 hero 来移动。

    camera-1

    这里我们还新建了一个 camera 节点来作为摄像机的载体,使用一个单独的节点作为摄像机节点会更灵活,当然我们也可以直接将摄像机组件添加到 hero 节点上,但是这样摄像机的位置就只能和 hero 节点重叠在一起了,不能做到缓慢跟随之类的效果。

    摄像机 - 图2

    在这里摄像机组件添加了三个节点到 targets 上,即我们需要摄像机拍摄这三个节点。并且我们还添加了一个 camera-control 组件,这个组件的作用主要是移动 camera 节点跟随 hero 节点。

    实例可在 物理系统示例 中的 tiled 示例中找到。

    注意

    当我们使用摄像机时,如果使用到了物理系统或者碰撞系统这些会内置渲染节点的系统,需要调用相关的 api 将他们的渲染节点也添加到摄像机上。

    1. cc.director.getPhysicsManager().attachDebugDrawToCamera(camera);
    2. cc.director.getCollisionManager().attachDebugDrawToCamera(camera);