Skip to content

点击与互动

属性

enableInteract

默认值:false

是否允许实体进行互动。如果允许互动,走进互动范围之内,实体身上将会出现互动提示。


interactRadiu

默认值:16

实体互动范围。数值越小,则需要靠近实体才会出现互动提示。

范围有多个可互动实体,按下键盘'['或']'键,切换互动目标。


interactHint

默认值:无

进入实体互动范围时,实体身上出现的提示文本。


interactColor

默认值:GameRGBColor(1, 1, 1)

进入实体互动范围时,提示文本的颜色。

点击查看示例代码
javascript
// 先在场景中放置一个名称为 NPC 的实体。
const npc = world.querySelector('#NPC');
npc.enableInteract = true; // 允许进行互动
npc.interactRadius = 16;   // 实体的互动范围
npc.interactHint = npc.id; // 互动提示框显示实体的名称
npc.interactColor = new GameRGBColor(1,0,1);  // 互动提示的文字颜色

// 玩家与实体进行交互时触发
npc.onInteract(async({entity}) => {
  const result = await entity.player.dialog({
    type: GameDialogType.TEXT,   // 对话框的类型,TEXT是文本框。
    title: npc.id,               // 对话框标题为NPC名字,表示正在说话的是NPC
    lookEye: entity,             // 将相机放在玩家位置
    lookTarget: npc,             // 相机镜interactHint头对准NPC
    content: `你好,${entity.player.name},很高兴认识你。`,
  });
});

方法

say()

让实体说话。

输入参数

参数必填默认值类型说明
messagestring说话的内容
options.duration2000number气泡及广播提示语的持续时间(ms)
options.hideFloatfalseboolean气泡内容是否在世界广播上隐藏?
点击查看示例代码
javascript
// 创建一个实体并让它每秒说一句话
const e = world.createEntity({
  position: [64, 9, 64],
})

setInterval(() => {
  e.say('hey, im a box.  my position is ' + e.position.toString());
}, 1000);

onClick()

当玩家用鼠标点击实体时触发

输入参数

参数必填默认值类型说明
handlerfunction监听到鼠标点击时的处理函数

onInteract()

当实体进行互动时触发

输入参数

参数必填默认值类型说明
handlerfunction监听到互动时的处理函数

onEntityContact()

当实体触碰另一个实体时触发

输入参数

参数必填默认值类型说明
handlerfunction监听到碰到另外的实体的处理函数

onEntitySeparate()

当实体停止触碰另一个实体时触发

输入参数

参数必填默认值类型说明
handlerfunction监听到停止碰到另外的实体的处理函数

onFluidEnter()

当实体进入液体时触发

输入参数

参数必填默认值类型说明
handlerfunction监听到进入液体的实体的处理函数

onFluidLeave()

当实体离开液体时触发

输入参数

参数必填默认值类型说明
handlerfunction监听到离开液体的实体的处理函数

onVoxelContact()

当实体触碰方块时触发

输入参数

参数必填默认值类型说明
handlerfunction监听到触碰方块的实体的处理函数

onVoxelSeparate()

当实体停止触碰方块时触发

输入参数

参数必填默认值类型说明
handlerfunction监听到停止触碰方块的实体的处理函数

接口

GameEntityContactEvent

当两个实体碰撞时触发的事件

参数类型说明
entityGameEntity碰撞中的第一个实体
otherGameEntity碰撞中的第二个实体
axisGameVector3碰撞的分离轴,也就是碰撞后物体弹飞的方向
ticknumber两个实体碰撞的时间
forceGameVector3碰撞所产生的力

GameFluidContactEvent

当实体进入或离开液体时触发的事件

参数类型说明
entityGameEntity触碰液体的实体
voxelnumber液体方块id
ticknumber实体进入或离开液体的时间

GameVoxelContactEvent

当实体触碰方块时触发的事件

参数类型说明
entityGameEntity触碰到方块的实体
voxelnumber液体方块id
ticknumber实体触碰方块的时间
axisGameVector3触碰的分离轴,也就是触碰后物体弹飞的方向
forceGameVector3碰撞力
voxelnumber被触碰的方块id
xnumber被触碰方块的x坐标
ynumber被触碰方块的y坐标
znumber被触碰方块的z坐标