Skip to content

实体的创建/销毁

方法

createEntity()

创建一个新实体 GameEntity 或复制一个现有的实体,若实体数量(entityQuota)达到上限,则返回 null

输入参数

参数必填默认值类型说明
configPartial<GameEntityConfig>指定实体的一组初始配置

返回值

类型说明
GameEntity | null根据指定参数创建的一个新实体对象,如达到上限将无法创建

定义于 #L9702

警告

需要提前在编辑器中添加'花'的模型。

添加后可以在地图中删除 (只需确保 设置-文件 页面中已加载 花.vb 模型文件)。

点击查看示例代码
javascript
/* 在地图中央随机位置创建50朵花。*/
for(let i=0;i<50;i++){
  world.createEntity({
    mesh:'mesh/花.vb',
    position:new GameVector3(64+ 10*Math.random(), 9, 64 + 10*Math.random()),
    meshScale:new GameVector3(0.1, 0.1, 0.1),
    collides:false,
    fixed:true,
    gravity:false,
  })
}

entityQuota()

返回脚本当前仍可创建的实体数量

返回值

类型说明
number当前仍可创建的实体数量

定义于 #L10147

点击查看示例代码
javascript
// 在控制台输出目前还可以创建的实体数量
console.log(`还可以创建 ${world.entityQuota()} 个实体`)

onEntityCreate()

当实体被创建时触发

输入参数

参数必填默认值类型说明
handlerfunction监听到有实体创建时的处理函数

定义于 #L10263

点击查看示例代码
javascript
// 非玩家的实体被创建时,广播一条消息
world.onEntityCreate(({ entity }) => {
  if (entity.isPlayer) { return }  // 如果实体是玩家类型则跳过
  entity.say(`我是 {entity.id},我在这个位置:{JSON.stringify(entity.position)}`)
})

onEntityDestroy()

当实体被销毁时触发

输入参数

参数必填默认值类型说明
handlerfunction监听到有实体销毁时的处理函数

定义于 #L10268

点击查看示例代码
javascript
// 拥有 'box' 标签的实体被销毁时,广播一条消息
world.onEntityDestroy(({ entity }) => {
  if (entity.isPlayer || !entity.hasTag('box')) return;   // 如果实体是玩家类型,并且不包含'box'标签则跳过
  world.say(`${entity.id} 已被销毁。`)
})

接口

GameEntityEvent

实体创建与销毁事件

参数类型说明
entityGameEntity销毁的实体
ticknumber事件发生时间

定义于 #L12500


GameEntityConfig

用于控制实体的参数组

参数类型说明
positionGameVector3实体的位置
velocityGameVector3实体朝向某个方向运动的作用力
collidesboolean实体是否可碰撞
meshstringmesh决定了实体的外形。'mesh/*.vb'
meshColorGameRGBAColor实体的颜色
meshScaleGameVector3实体的缩放比例
meshOrientationGameQuaternion实体的旋转角度
meshMetalnessnumber实体的金属感
meshEmissivenumber实体的发光度
meshShininessnumber实体的反光度
gravityboolean实体是否会下落
fixedboolean实体的位置是否固定不动
massnumber实体质量
frictionnumber实体的粘性(0 = 滑,1 = 粘)
restitutionnumber实体的弹性(0 = 软, 1 = 弹)
enableInteractboolean允许实体进行互动
interactRadiusnumber进入实体互动的范围。范围越小,需更靠近。
interactHintstring进入实体互动范围时,实体身上出现的提示文本
interactColorGameRGBAColor进入实体互动范围时,提示文本的字体颜色
particleRatenumber实体每秒产生粒子的数量
particleRateSpreadnumber增加实体每秒产生粒子数量的随机性
particleLimitnumber实体可产生粒子总数的上限
particleLifetimenumber实体所产生粒子能存活的秒数
particleLifetimeSpreadnumber增加实体所产生粒子存活时间的随机性
particleSizenumber[]实体所产生粒子的大小变化
particleSizeSpreadnumber增加实体所产生粒子大小的随机性
particleColorGameRGBColor[]实体所产生粒子的颜色变化
particleVelocityGameVector3实体所产生粒子的初始速度
particleVelocitySpreadGameVector3增加实体所产生粒子初始速度的随机性
particleDampingnumber实体所产生粒子的阻尼系数
particleAccelerationGameVector3实体所产生粒子的加速度
particleNoisenumber实体所产生粒子摆动的最大幅度
particleNoiseFrequencynumber实体所产生粒子摆动的频率
chatSoundGameSoundEffect实体触发说话事件时播放的音效
interactSoundGameSoundEffect实体触发互动事件时播放的音效
hurtSoundGameSoundEffect实体触发受伤事件时播放的音效
dieSoundGameSoundEffect实体触发死亡事件时播放的音效

定义于 #L10493