Skip to content

点击与互动

属性

enableInteract

默认值:false

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

定义于 #L10932


interactRadiu

默认值:16

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

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

定义于 #L10947


interactHint

默认值:无

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

定义于 #L10942


interactColor

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

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

定义于 #L10937

点击查看示例代码
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说话的内容

定义于 #L10636

点击查看示例代码
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监听到鼠标点击时的处理函数

定义于 #L10645


onInteract()

当实体进行互动时触发

输入参数

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

定义于 #L10687


onEntityContact()

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

输入参数

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

定义于 #L10651


onEntitySeparate()

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

输入参数

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

定义于 #L10657


onFluidEnter()

当实体进入液体时触发

输入参数

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

定义于 #L10675


onFluidLeave()

当实体离开液体时触发

输入参数

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

定义于 #L10681


onVoxelContact()

当实体触碰方块时触发

输入参数

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

定义于 #L10663


onVoxelSeparate()

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

输入参数

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

定义于 #L10669

接口

GameEntityContactEvent

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

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

定义于 #L12673


GameFluidContactEvent

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

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

定义于 #L12799


GameVoxelContactEvent

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

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

定义于 #L12724