# 快速制作:第一张跑酷地图
视频中使用的代码如下(写完代码后,需运行才能生效哦):
# 1、生成起点和终点之间的随机跳板
起点坐标<6, 8, 64>,终点坐标<61, 8, 64>
以下跳板代码是根据这2个坐标点刚好对应的距离和坐标生成的,不要错漏了哦~
function initPlatform() {
// 首先定位到第一块跳板的X坐标(起点的X坐标为6,那么每隔5个坐标生成一个跳板)
const positionX = 6 + 5
// 地面的Y坐标是8,那么跳板的Y坐标设置到9,比地面高1个单位,防止替换掉地面方块
const positionY = 9
for (let i = 0; i < 10; i++) {
// 为了随机生成左右两侧的跳板,首先随机出“左”或者“右”的方向
const direction = Math.random() > 0.5 ? 1 : -1
// 根据上面得出的方向,以z=64作为参考,向左或向右移动(0-2)个单位
const positionZ = 64 + Math.random() * 2 * direction
// 将以上计算得到的x,y,z坐标作为生成跳板的坐标信息 (每个跳板的x方向坐标间隔5个单位)
voxels.setVoxel(positionX + i * 5, positionY, positionZ, "rock")
}
}
initPlatform();
思考: 试试看,如果改变了里面的某一个数值参数,会发生什么?
# 2、设置重生点
// 当玩家进入地图时
world.onPlayerJoin(({ entity }) => {
// 设置玩家的重生点为 坐标6, 15, 64
entity.player.spawnPoint = new Box3Vector3(6, 15, 64)
// 强制玩家重生
entity.player.forceRespawn()
})
# 3、设置跑酷胜利条件
world.onVoxelContact(async ({ entity, voxel }) => {
// 将方块id转换名称
const voxelName = voxels.name(voxel)
// 如果方块名称是carpet_08
if (voxelName === 'carpet_08') {
// 给当前玩家弹出窗口
await entity.player.dialog({
type: Box3DialogType.TEXT,
title: "获胜",
content: `${entity.player.name},恭喜你通关游戏!`,
});
// 将玩家移动到起点
entity.player.forceRespawn()
}
})
# 4、清除原有地形
此处代码对应为“大尺寸”空白地图的默认地形
for (let i = 0; i <= 126; i++) {
for (let j = 0; j <= 126; j++) {
for (let k = 0; k <= 8; k++) {
voxels.setVoxel(i, k, j, 0)
}
}
}
← 自定义出生点/复活点 道具属性加成 →