# 粒子

# Bind

客户端

method in mod.client.component.particleEntityBindComp.ParticleEntityBindComp

  • 描述

    绑定entity

  • 参数

    参数名
    数据类型
    说明
    bindEntityId str 绑定的entity的ID
    offset tuple(float,float,float) 绑定的偏移量,相对绑定entity脚下中心
    rot tuple(float,float,float) 绑定的旋转角度
    correction bool 默认不开启,开启后可以使特效的旋转角度准确设置为参照玩家的相对角度
  • 返回值

    数据类型
    说明
    bool 设置是否成功
  • 示例

import mod.client.extraClientApi as clientApi
comp = clientApi.GetEngineCompFactory().CreateParticleEntityBind(particleEntityId)
comp.Bind(entityId, (0, 1, 0), (0, 0, 0))

method in mod.client.component.particleSkeletonBindComp.ParticleSkeletonBindComp

  • 描述

    绑定骨骼模型

  • 参数

    参数名
    数据类型
    说明
    modelId int 绑定的骨骼模型的ID(见model组件的GetModelId)
    boneName str 绑定具体骨骼的名称
    offset tuple(float,float,float) 绑定的偏移量
    rot tuple(float,float,float) 绑定的旋转角度
  • 返回值

    数据类型
    说明
    bool 设置是否成功
  • 示例

import mod.client.extraClientApi as clientApi
comp = clientApi.GetEngineCompFactory().CreateParticleSkeletonBind(particleEntityId)
comp.Bind(modelId, "root", (0, 1, 0), (0, 0, 0))

# CreateEngineParticle

客户端

method in mod.client.system.clientSystem.ClientSystem

  • 描述

    用于创建粒子特效

  • 参数

    参数名
    数据类型
    说明
    path str 特效资源路径,需要加上后缀名(一般是json)
    pos tuple(float,float,float) 创建位置坐标
  • 返回值

    数据类型
    说明
    int或None particleEntityId或者None
  • 备注

    • 创建粒子后,可以用返回的particleEntityId创建客户端粒子分类中的相关组件,设置所需属性,以实现各种表现效果。
    • 切换维度后会自动隐藏非本维度创建的而且没有绑定实体的粒子, 回到该维度后会自动重新显示
    • 粒子创建之后需要调用particleControl组件的Play函数才会播放,如果播放非本维度创建的粒子,会同时修改该粒子的创建维度为当前维度
  • 示例

import mod.client.extraClientApi as clientApi
class MyClientSystem(ClientSystem):
    # 创建
    def createParticle(self):
        particleEntityId = self.CreateEngineParticle("effects/fire.json", (0,5,0))
        particleControlComp = clientApi.GetEngineCompFactory().CreateParticleControl(particleEntityId)
        particleControlComp.Play()

    # 删除
    def removeParticle(self, particleEntityId):
        self.DestroyEntity(particleEntityId)

# GetParticleEmissionRate

客户端

method in mod.client.component.particleControlComp.ParticleControlComp

  • 描述

    获取粒子发射器每帧发射粒子的频率。

  • 参数

  • 返回值

    数据类型
    说明
    tuple(float,float) 粒子发射器每帧发射粒子的频率。
  • 备注

    • 该接口所获取的值对应粒子特效json文件中"emissionrate"的值
  • 示例

import mod.client.extraClientApi as clientApi
comp = clientApi.GetEngineCompFactory().CreateParticleControl(particleEntityId)
comp.GetParticleEmissionRate()

# GetParticleMaxNum

客户端

method in mod.client.component.particleControlComp.ParticleControlComp

  • 描述

    获取粒子发射器包含的最大粒子数量。

  • 参数

  • 返回值

    数据类型
    说明
    int 粒子发射器所包含的最大粒子数量。
  • 备注

    • 该接口所获取的值对应粒子特效json文件中"numparticles"的值
  • 示例

import mod.client.extraClientApi as clientApi
comp = clientApi.GetEngineCompFactory().CreateParticleControl(particleEntityId)
comp.GetParticleMaxNum()

# GetParticleMaxSize

客户端

method in mod.client.component.particleControlComp.ParticleControlComp

  • 描述

    获取粒子特效中粒子大小的最大值。

  • 参数

  • 返回值

    数据类型
    说明
    tuple(float,float) 粒子大小的最大值
  • 备注

    • 该接口获取的值对应粒子特效json文件中"particlesize"的"max"值。
  • 示例

import mod.client.extraClientApi as clientApi
comp = clientApi.GetEngineCompFactory().CreateParticleControl(particleEntityId)
comp.GetParticleMaxSize()

# GetParticleMinSize

客户端

method in mod.client.component.particleControlComp.ParticleControlComp

  • 描述

    获取粒子特效中粒子大小的最小值。

  • 参数

  • 返回值

    数据类型
    说明
    tuple(float,float) 粒子大小的最小值。
  • 备注

    • 该接口获取的值对应粒子特效json文件中"particlesize"的"min"值。
  • 示例

import mod.client.extraClientApi as clientApi
comp = clientApi.GetEngineCompFactory().CreateParticleControl(particleEntityId)
comp.GetParticleMinSize()

# GetParticleVolumeSize

客户端

method in mod.client.component.particleControlComp.ParticleControlComp

  • 描述

    获取粒子发射器的体积大小缩放值。

  • 参数

  • 返回值

    数据类型
    说明
    tuple(float,float,float) 粒子发射器的体积大小缩放值。
  • 示例

import mod.client.extraClientApi as clientApi
comp = clientApi.GetEngineCompFactory().CreateParticleControl(particleEntityId)
comp.GetParticleVolumeSize()

# GetPos

客户端

method in mod.client.component.particleTransComp.ParticleTransComp

  • 描述

    获取粒子发射器的世界坐标位置

  • 参数

  • 返回值

    数据类型
    说明
    tuple(float,float,float) 返回粒子发射器的世界坐标位置
  • 示例

import mod.client.extraClientApi as clientApi
comp = clientApi.GetEngineCompFactory().CreateParticleTrans(particleEntityId)
comp.GetPos()

# GetRot

客户端

method in mod.client.component.particleTransComp.ParticleTransComp

  • 描述

    获取粒子发射器的旋转角度

  • 参数

  • 返回值

    数据类型
    说明
    tuple(float,float,float) 返回粒子发射器的旋转角度
  • 备注

    • 注意,当使用SetRotation设置旋转角度时,设置的x轴方向的旋转接近90度或者-90度,此时会由于旋转的奇异性,计算旋转角度时会出现除0的问题,因此为了避免这种情况,会采用奇异情况下的计算公式来计算,这种情况接口返回的是与SetRotUseZXY接口所设置的值等价的旋转角度。
    • 该接口获取的旋转值对应接口SetRotUseZXY所设置的旋转值。
  • 示例

import mod.client.extraClientApi as clientApi
comp = clientApi.GetEngineCompFactory().CreateParticleTrans(particleEntityId)
comp.GetRot()

# Pause

客户端

method in mod.client.component.particleControlComp.ParticleControlComp

  • 描述

    暂停播放,粒子定格在当前时刻,再次调用Play时继续播放

  • 参数

  • 返回值

    数据类型
    说明
    bool 设置是否成功
  • 示例

import mod.client.extraClientApi as clientApi
comp = clientApi.GetEngineCompFactory().CreateParticleControl(particleEntityId)
comp.Pause()

# Play

客户端

method in mod.client.component.particleControlComp.ParticleControlComp

  • 描述

    播放粒子特效

  • 参数

  • 返回值

    数据类型
    说明
    bool 设置是否成功
  • 示例

import mod.client.extraClientApi as clientApi
comp = clientApi.GetEngineCompFactory().CreateParticleControl(particleEntityId)
comp.Play()

# SetFadeDistance

客户端

method in mod.client.component.particleControlComp.ParticleControlComp

  • 描述

    设置粒子开始自动调整透明度的距离。粒子与摄像机之间的距离小于该值时会自动调整粒子的透明度,距离摄像机越近,粒子越透明

  • 参数

    参数名
    数据类型
    说明
    fadeDistance float 自动调整透明度的距离,应为正数,负数将视作零来处理
  • 返回值

    数据类型
    说明
    bool 设置是否成功
  • 示例

import mod.client.extraClientApi as clientApi
comp = clientApi.GetEngineCompFactory().CreateParticleControl(particleEntityId)
# 设置该粒子在与相机距离小于3时会自动调整透明度
comp.SetFadeDistance(3)

# SetLayer

客户端

method in mod.client.component.particleControlComp.ParticleControlComp

  • 描述

    粒子默认层级为1,当层级不为1时表示该特效开启特效分层渲染功能。特效(粒子和帧动画)分层渲染时,层级越高渲染越靠后,层级大的会遮挡层级低的,且同一层级的特效会根据特效的相对位置产生正确的相互遮挡关系。

  • 参数

    参数名
    数据类型
    说明
    layer int 粒子渲染层级,总共包含0-15的层级。
  • 返回值

    数据类型
    说明
    bool 设置是否成功
  • 备注

    • 该接口只针对粒子进行设置,序列帧特效请使用frameAniControl组件
  • 示例

import mod.client.extraClientApi as clientApi
comp = clientApi.GetEngineCompFactory().CreateParticleControl(particleEntityId)
# 设置渲染层级为2
comp.SetLayer(2)

# SetParticleEmissionRate

客户端

method in mod.client.component.particleControlComp.ParticleControlComp

  • 描述

    设置粒子发射器每帧发射粒子的频率,频率越大则每帧发射的粒子数量越多,但粒子数量不会超过粒子发射器的粒子容量,同时由于性能考虑,每帧发射的粒子数量也不会超过100个。

  • 参数

    参数名
    数据类型
    说明
    minRate float 每帧发射粒子频率的最小值。每帧发射粒子的频率将在频率最小值和频率最大值之间取随机数进行插值。当该值设置为负值时设置将会失败,且该值不能比粒子频率的最大值大。
    maxRate float 每帧发射粒子频率的最大值。每帧发射粒子的频率将在频率最小值和频率最大值之间取随机数进行插值。当该值设置为负值时设置将会失败,且该值不能比粒子频率的最小值小。
  • 返回值

    数据类型
    说明
    bool 设置是否成功
  • 备注

    • 该接口所设置的值对应粒子特效json文件中"emissionrate"的值
  • 示例

import mod.client.extraClientApi as clientApi
comp = clientApi.GetEngineCompFactory().CreateParticleControl(particleEntityId)
# 扩充粒子发射器的粒子容量
comp.SetParticleMaxNum(1000)
# 提高发射粒子的频率
comp.SetParticleEmissionRate(15,20)

# SetParticleMaxNum

客户端

method in mod.client.component.particleControlComp.ParticleControlComp

  • 描述

    设置粒子发射器的粒子容量,即粒子发射器所包含的最大粒子数量。该数量并不代表目前粒子发射器所发射的粒子数量,如需要增加发射的粒子数量,需同时改变粒子的发射频率。

  • 参数

    参数名
    数据类型
    说明
    num int 粒子发射器所包含的最大粒子数量,不能为负值,粒子的数量最大值不超过100000。
  • 返回值

    数据类型
    说明
    bool 设置是否成功
  • 备注

    • 考虑到性能的原因,请注意粒子的数量不要设置过大。该接口设置的值对应粒子特效json文件中"numparticles"的值
  • 示例

import mod.client.extraClientApi as clientApi
comp = clientApi.GetEngineCompFactory().CreateParticleControl(particleEntityId)
comp.SetParticleMaxNum(1000)

# SetParticleSize

客户端

method in mod.client.component.particleControlComp.ParticleControlComp

  • 描述

    设置粒子特效中粒子大小的最小值及最大值。

  • 参数

    参数名
    数据类型
    说明
    minSize tuple(float,float) 粒子大小的最小值(x,y)。x值影响粒子的左右拉伸程度,y值影响粒子的上下拉伸程度。粒子特效中的粒子大小会在最小值和最大值当中取随机值进行决定。当该值设置为负值时设置将会失败,且该值不能比粒子大小的最大值大。
    maxSize tuple(float,float) 粒子大小的最大值(x,y)。x值影响粒子的左右拉伸程度,y值影响粒子的上下拉伸程度。粒子特效中的粒子大小会在最小值和最大值当中取随机值进行决定。当该值设置为负值时设置将会失败,且该值不能比粒子大小的最小值小。
  • 返回值

    数据类型
    说明
    bool 设置是否成功
  • 备注

    • 该接口设置的值对应粒子特效json文件中"particlesize"的值。
  • 示例

import mod.client.extraClientApi as clientApi
comp = clientApi.GetEngineCompFactory().CreateParticleControl(particleEntityId)
comp.SetParticleSize((0.5,0.5),(0.6,0.6))

# SetParticleVolumeSize

客户端

method in mod.client.component.particleControlComp.ParticleControlComp

  • 描述

    设置粒子发射器的体积大小缩放,不影响单个粒子的尺寸。粒子发射器的体积越大,则粒子的发射范围越大。

  • 参数

    参数名
    数据类型
    说明
    scale tuple(float,float,float) 粒子发射器的体积大小缩放值(x,y,z), x,y,z分别为各个坐标轴方向的缩放值,该值越大该方向发射粒子的范围越大。
  • 返回值

    数据类型
    说明
    bool 设置是否成功
  • 备注

    • 当粒子绑定实体时该设置无效
  • 示例

import mod.client.extraClientApi as clientApi
comp = clientApi.GetEngineCompFactory().CreateParticleControl(particleEntityId)
comp.SetParticleVolumeSize((1,0,0))

# SetPos

客户端

method in mod.client.component.particleTransComp.ParticleTransComp

  • 描述

    设置粒子发射器的世界坐标位置

  • 参数

    参数名
    数据类型
    说明
    pos tuple(float,float,float) 世界坐标
  • 返回值

    数据类型
    说明
    bool 设置是否成功
  • 示例

import mod.client.extraClientApi as clientApi
comp = clientApi.GetEngineCompFactory().CreateParticleTrans(particleEntityId)
comp.SetPos((0, 5, 0))

# SetRelative

客户端

method in mod.client.component.particleControlComp.ParticleControlComp

  • 描述

    当粒子绑定了entity或骨骼模型时,发射出的粒子使用entity坐标系还是世界坐标系。与mcstudio特效编辑器中粒子的“相对挂点运动”选项功能相同。

  • 参数

    参数名
    数据类型
    说明
    relative bool True表示相对坐标系,False表示世界坐标系
  • 返回值

    数据类型
    说明
    bool 设置是否成功
  • 示例

import mod.client.extraClientApi as clientApi
comp = clientApi.GetEngineCompFactory().CreateParticleControl(particleEntityId)
# 使用世界坐标系
comp.SetRelative(False)

# SetRotUseZXY

客户端

method in mod.client.component.particleTransComp.ParticleTransComp

  • 描述

    设置粒子发射器的旋转,旋转顺序按照绕z,x,y轴旋转

  • 参数

    参数名
    数据类型
    说明
    rot tuple(float,float,float) 绕局部坐标系的+z,+x,+y轴旋转的角度,旋转顺序按照绕z,x,y轴旋转。
  • 返回值

    数据类型
    说明
    bool 设置是否成功
  • 示例

import mod.client.extraClientApi as clientApi
comp = clientApi.GetEngineCompFactory().CreateParticleTrans(particleEntityId)
# 绕z轴旋转90度,然后绕y轴旋转90度
comp.SetRotUseZXY((0, 90, 90))

# SetUsePointFiltering

客户端

method in mod.client.component.particleControlComp.ParticleControlComp

  • 描述

    设置粒子材质的纹理滤波是否使用点滤波方法。默认为使用双线性滤波

  • 参数

    参数名
    数据类型
    说明
    enable bool true为使用点滤波方法,false为使用默认的双线性滤波
  • 返回值

    数据类型
    说明
    bool 设置是否成功
  • 备注

    • 使用点滤波的图像通常边缘清晰、可能会有较强烈的锯齿感;使用双线性插值的图像通常比较平滑、可能会使图像一定程度上变得模糊
  • 示例

import mod.client.extraClientApi as clientApi
comp = clientApi.GetEngineCompFactory().CreateParticleControl(particleEntityId)
# 设置使用点滤波
comp.SetUsePointFiltering(True)
comp.Play()

# Stop

客户端

method in mod.client.component.particleControlComp.ParticleControlComp

  • 描述

    停止粒子播放

  • 参数

  • 返回值

    数据类型
    说明
    bool 设置是否成功
  • 示例

import mod.client.extraClientApi as clientApi
comp = clientApi.GetEngineCompFactory().CreateParticleControl(particleEntityId)
comp.Stop()