# 客户端表现实体创建
注意,以下特效的创建仅在客户端有效,如果想要多人同时看到某个特效,需要服务端通过事件系统发送消息到对应的客户端。
# 特效
# 创建序列帧特效
CreateEngineSfx
描述
用于创建序列帧特效
参数
参数名 数据类型 说明 path str 特效资源路径,不用后缀名 pos tuple(float,float,float) 创建位置,可选,没传则可以创建完用frameAniTrans组件设置 rot tuple(float,float,float) 角度,可选,没传则可以创建完用frameAniTrans组件设置 scale float 缩放系数,可选,没传则可以创建完用frameAniTrans组件设置 返回值
数据类型 说明 int或None frameEntityId或者None 备注
- 创建序列帧后,可以用返回的frameEntityId创建序列帧分类中的相关组件,设置所需属性,以实现各种表现效果
- 切换维度后会自动隐藏非本维度创建的而且没有绑定实体的序列帧, 回到该维度后会自动重新显示
- 需要注意,序列帧创建之后需要调用frameAniControl组件的play函数才会播放,如果播放非本维度创建的序列帧,会同时修改该序列帧的创建维度为当前维度
示例
import mod.client.extraClientApi as clientApi
compFactory = clientApi.GetEngineCompFactory()
class MyClientSystem(ClientSystem):
# 创建
def createSfx(self):
frameEntityId = self.CreateEngineSfx("textures/sfxs/snow_3")
frameAniTransComp = compFactory.CreateFrameAniTrans(frameEntityId)
frameAniTransComp.SetPos((10,10,10))
frameAniTransComp.SetRot((0,0,0))
frameAniTransComp.SetScale((1,1,1))
frameAniControlComp = compFactory.CreateFrameAniControl(frameEntityId)
frameAniControlComp.Play()
# 删除
def removeSfx(self, frameEntityId):
self.DestroyEntity(frameEntityId)
# 创建模型特效
CreateEngineEffect
描述
指用编辑器保存资源包中models/effect/xxx_effect.json生成编辑好的所有挂点的所有特效。生成的特效会自动进行挂接及播放,编辑器中设为不可见的特效也会进行播放。并且使用这种方式创建的特效,开发者不用维护entity进出视野导致的挂接特效被移除,引擎会在entity每次进入视野时自动创建所有特效。
参数
参数名 数据类型 说明 path str 特效配置路径,需要包含json后缀名 bindEntity str 绑定实体的Id aniName str 选择使用哪个模型动作的特效 返回值
数据类型 说明 int或None effectEntityId或者None 备注
- 创建特效前需要将entity的骨骼模型替换为编辑器中的一致(或者其他骨骼相同的模型),否则将挂接失败,替换模型见服务端和客户端的model组件。
- 暂不支持挂接原版史蒂夫的特效。
示例
class MyClientSystem(ClientSystem):
# 创建
def createEffect(self):
# 绑定在本地玩家身上的模型特效
effectEntityId = self.CreateEngineEffect("models/effect/xuenv_effect.json", extraClientApi.GetLocalPlayerId(), 'idle')
# 删除
def removeEffect(self, effectEntityId):
self.DestroyEntity(effectEntityId)
# 创建特效编辑器编辑的序列帧特效
CreateEngineSfxFromEditor
描述
指使用资源包中effects/xxx.json,按照编辑器中编辑好的参数创建序列帧。支持环状序列帧
参数
参数名 数据类型 说明 path str 特效配置路径,需要为"effects/xxx.json","xxx"为编辑器创建序列帧时填写的名称 pos tuple(float,float,float) 创建位置,可选,没传则可以创建完用frameAniTrans组件设置,一般需要设置播放的位置 rot tuple(float,float,float) 角度,可选,没传则可以创建完用frameAniTrans组件设置 scale float 缩放系数,可选,没传则可以创建完用frameAniTrans组件设置 返回值
数据类型 说明 int或None frameEntityId或者None 备注
- 创建序列帧后,可以用返回的frameEntityId创建序列帧分类中的相关组件,设置所需属性,以实现各种表现效果
- 需要注意,序列帧创建之后需要调用frameAniControl组件的play函数才会播放
- 根据editor配置生成序列帧后还需要设置位置或绑定,以及进行播放。
示例
import mod.client.extraClientApi as clientApi
compFactory = clientApi.GetEngineCompFactory()
class MyClientSystem(ClientSystem):
# 创建
def createSfxFromEditor(self):
frameEntityId = self.CreateEngineSfxFromEditor("effects/mySfx.json")
frameAniTransComp = compFactory.CreateFrameAniTrans(frameEntityId)
frameAniTransComp.SetPos((10,10,10))
frameAniTransComp.SetRot((0,0,0))
frameAniTransComp.SetScale((1,1,1))
frameAniControlComp = compFactory.CreateFrameAniControl(frameEntityId)
frameAniControlComp.Play()
# 删除
def removeSfx(self, frameEntityId):
self.DestroyEntity(frameEntityId)
# 创建粒子特效
CreateEngineParticle
描述
用于创建粒子特效
参数
参数名 数据类型 说明 path str 特效资源路径,需要加上后缀名(一般是json) pos tuple(float,float,float) 创建位置坐标 返回值
数据类型 说明 int或None particleEntityId或者None 备注
- 创建粒子后,可以用返回的particleEntityId创建客户端粒子分类中的相关组件,设置所需属性,以实现各种表现效果。
- 切换维度后会自动隐藏非本维度创建的而且没有绑定实体的粒子, 回到该维度后会自动重新显示
- 粒子创建之后需要调用particleControl组件的Play函数才会播放,如果播放非本维度创建的粒子,会同时修改该粒子的创建维度为当前维度
示例
import mod.client.extraClientApi as clientApi
compFactory = clientApi.GetEngineCompFactory()
class MyClientSystem(ClientSystem):
# 创建
def createParticle(self):
particleEntityId = self.CreateEngineParticle("effects/fire.json", (0,5,0))
particleControlComp = compFactory.CreateParticleControl(particleEntityId)
particleControlComp.Play()
# 删除
def removeParticle(self, particleEntityId):
self.DestroyEntity(particleEntityId)