Skip to content
关卡拓展

关卡拓展

本节课我们会使用编辑器的3个功能来丰富关卡,这个3个功能分别是冲量对象、预制体、世界UI

1.使用冲量对象制作障碍物

冲量对象的具体作用大家可以阅读下方这个文档,在这里我们需要使用冲量对象来制作障碍物。

冲量对象 | 产品手册 (ark.online)

下图展示了向场景中添加冲量对象的步骤

在资源库中点击功能对象

选择“运动功能对象”

将冲量对象拖动到场景中

在对象管理器选中冲量对象

修改冲量力的类型,将其由矢量力修改为径向力

修改冲量值为660

image-20230830140634478

由于冲量对象是透明的,我们可以使用一个特效或者模型来装饰这个冲量对象。

①向场景中拖入一个半球体

②将半球体作为冲量对象的父物体(方便管理)

image-20230830141715139

效果演示

角色碰到冲量对象就会被弹开

20230830-142551

2.使用预制体制作即死块

目前游戏中只有当碰到地面的时候才会让角色死亡,现在我们可以通过预制体,制作一个即死块,让角色碰到它的时候就死亡。

2.1.创建预制体

在工程内容中点击“预制体”

点击“新建预制体”

将预制体的名称修改为“即死块”并双击打开

拖动一个正方体到预制体窗口中

修改正方体的缩放(我在这里还将正方体的材质改为了红色)

将网络状态修改为客户端

image-20230830143728023

2.2.创建并挂载即死块脚本

新建一个脚本,命名为DeathBlock,并挂载到正方体下。

在正方体的属性面板上,将“碰撞”修改为“仅开启检测”。(原因后面会讲)

image-20230830144345292

2.3.编写DeathBlock脚本

该脚本使用了一个类Model。每个静态模型都会有一个Model,我们可以将Model理解成模型的网格,这个Model也可以像触发器一样用来计算碰撞。所以我们从正方体上获取到Model,然后为其添加onTouch事件,当有角色触碰到这个方块时,就调用关卡管理器的死亡函数来让角色死亡。

TIP

使用Model的onTouch事件的前提是:物体的碰撞需要为“仅开启检测”状态。(见图5)

ts
import { LevelManager } from "./LevelManager"

@Component
export default class DeathBlock extends Script {

    /** 当脚本被实例后,会在第一帧更新前调用此函数 */
    protected onStart(): void {

        // 当角色 碰到方块 就让角色死亡

        // 获取挂载到的物体的Model
        let model = this.gameObject as Model
        // 给物体的onTouch事件添加逻辑
        model.onTouch.add((other: GameObject) => {
            if (other instanceof Character) {
                // 让角色死亡
                LevelManager.instance.charDeath(other)
            }
        })
    }

}
import { LevelManager } from "./LevelManager"

@Component
export default class DeathBlock extends Script {

    /** 当脚本被实例后,会在第一帧更新前调用此函数 */
    protected onStart(): void {

        // 当角色 碰到方块 就让角色死亡

        // 获取挂载到的物体的Model
        let model = this.gameObject as Model
        // 给物体的onTouch事件添加逻辑
        model.onTouch.add((other: GameObject) => {
            if (other instanceof Character) {
                // 让角色死亡
                LevelManager.instance.charDeath(other)
            }
        })
    }

}

2.4.向场景中布置即死块

我们切换到场景视图,然后将即死块预制体拖动到场景上合适的位置即可。

20230830-150941

2.5.效果演示

角色碰到即死块就会死亡

20230830-151925

3.使用世界UI制作提示牌

世界UI的具体作用可以阅读这个文档:世界 UI | 产品手册 (ark.online)

我们可以利用世界UI,向场景中添加一些提示牌,从而达到丰富关卡的目的。

3.1.制作显示内容

世界UI的作用是将UI渲染在场景上,所以我们首先需要创建一个UI,并制作好需要显示的内容。

如下图所示,我用文字和背景制作了一个UI,UI名为SayHellow。

image-20230830155236164

3.2.使用世界UI

使用世界UI可以将我们上一步制作的UI显示在场景中,具体步骤如下:

在资源库中选中功能对象

选中“游戏功能对象”

找到“世界UI”并拖动到场景上

将SayHellow这个UI拖动到世界UI属性面板上的“绑定UI对象”里

image-20230830155650521