# 序列帧

# Bind

客户端

method in mod.client.component.frameAniEntityBindComp.FrameAniEntityBindComp

  • 描述

    绑定entity

  • 参数

    参数名
    数据类型
    说明
    bindEntityId str 绑定的entity的ID
    offset tuple(float,float,float) 绑定的偏移量
    rot tuple(float,float,float) 绑定的旋转角度
  • 返回值

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

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

method in mod.client.component.frameAniSkeletonBindComp.FrameAniSkeletonBindComp

  • 描述

    绑定骨骼模型

  • 参数

    参数名
    数据类型
    说明
    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().CreateFrameAniSkeletonBind(frameEntityId)
comp.Bind(modelId, "root", (0, 1, 0), (0, 0, 0))

# CreateEngineSfx

客户端

method in mod.client.system.clientSystem.ClientSystem

  • 描述

    创建序列帧特效

  • 参数

    参数名
    数据类型
    说明
    path str 特效资源路径,不用后缀名
    pos tuple(float,float,float) 创建位置,可选,没传则可以创建完用frameAniTrans组件设置
    rot tuple(float,float,float) 角度,可选,没传则可以创建完用frameAniTrans组件设置
    scale tuple(float,float,float) 缩放系数,可选,没传则可以创建完用frameAniTrans组件设置
  • 返回值

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

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

import mod.client.extraClientApi as clientApi
class MyClientSystem(ClientSystem):
    # 创建
    def createSfx(self):
        frameEntityId = self.CreateEngineSfx("textures/sfxs/snow_3")
        frameAniTransComp = clientApi.GetEngineCompFactory().CreateFrameAniTrans(frameEntityId)
        frameAniTransComp.SetPos((10,10,10))
        frameAniTransComp.SetRot((0,0,0))
        frameAniTransComp.SetScale((1,1,1))
        frameAniControlComp = clientApi.GetEngineCompFactory().CreateFrameAniControl(frameEntityId)
        frameAniControlComp.Play()

    # 删除
    def removeSfx(self, frameEntityId):
        self.DestroyEntity(frameEntityId)

# CreateEngineSfxFromEditor

客户端

method in mod.client.system.clientSystem.ClientSystem

  • 描述

    指使用资源包中effects/xxx.json,按照编辑器中编辑好的参数创建序列帧。支持环状序列帧

  • 参数

    参数名
    数据类型
    说明
    path str 特效配置路径,需要为"effects/xxx.json","xxx"为编辑器创建序列帧时填写的名称
    pos tuple(float,float,float) 创建位置,可选,没传则可以创建完用frameAniTrans组件设置,一般需要设置播放的位置
    rot tuple(float,float,float) 角度,可选,没传则可以创建完用frameAniTrans组件设置
    scale tuple(float,float,float) 缩放系数,可选,没传则可以创建完用frameAniTrans组件设置
  • 返回值

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

    • 创建序列帧后,可以用返回的frameEntityId创建序列帧分类中的相关组件,设置所需属性,以实现各种表现效果
    • 需要注意,序列帧创建之后需要调用frameAniControl组件的play函数才会播放
    • 根据editor配置生成序列帧后还需要设置位置或绑定,以及进行播放。
  • 示例

import mod.client.extraClientApi as clientApi
class MyClientSystem(ClientSystem):
    # 创建
    def createSfxFromEditor(self):
        frameEntityId = self.CreateEngineSfxFromEditor("effects/mySfx.json")
        frameAniTransComp = clientApi.GetEngineCompFactory().CreateFrameAniTrans(frameEntityId)
        frameAniTransComp.SetPos((10,10,10))
        frameAniTransComp.SetRot((0,0,0))
        frameAniTransComp.SetScale((1,1,1))
        frameAniControlComp = clientApi.GetEngineCompFactory().CreateFrameAniControl(frameEntityId)
        frameAniControlComp.Play()

    # 删除
    def removeSfx(self, frameEntityId):
        self.DestroyEntity(frameEntityId)

# GetPos

客户端

method in mod.client.component.frameAniTransComp.FrameAniTransComp

  • 描述

    获取序列帧特效的位置

  • 参数

  • 返回值

    数据类型
    说明
    tuple(float,float,float) 返回序列帧特效的世界坐标位置。
  • 示例

import mod.client.extraClientApi as clientApi
comp = clientApi.GetEngineCompFactory().CreateFrameAniTrans(frameEntityId)
comp.GetPos()

# GetRot

客户端

method in mod.client.component.frameAniTransComp.FrameAniTransComp

  • 描述

    获取序列帧特效的旋转角度

  • 参数

  • 返回值

    数据类型
    说明
    tuple(float,float,float) 返回序列帧特效的旋转角度。
  • 示例

import mod.client.extraClientApi as clientApi
comp = clientApi.GetEngineCompFactory().CreateFrameAniTrans(frameEntityId)
comp.GetRot()

# GetScale

客户端

method in mod.client.component.frameAniTransComp.FrameAniTransComp

  • 描述

    获取序列帧特效的缩放值

  • 参数

  • 返回值

    数据类型
    说明
    tuple(float,float,float) 返回序列帧特效的缩放值。
  • 示例

import mod.client.extraClientApi as clientApi
comp = clientApi.GetEngineCompFactory().CreateFrameAniTrans(frameEntityId)
comp.GetScale()

# Pause

客户端

method in mod.client.component.frameAniControlComp.FrameAniControlComp

  • 描述

    暂停播放,序列帧定格在当前时刻,再次调用Play时继续播放

  • 参数

  • 返回值

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

import mod.client.extraClientApi as clientApi
comp = clientApi.GetEngineCompFactory().CreateFrameAniControl(frameEntityId)
comp.Pause()

# Play

客户端

method in mod.client.component.frameAniControlComp.FrameAniControlComp

  • 描述

    播放序列帧

  • 参数

  • 返回值

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

import mod.client.extraClientApi as clientApi
comp = clientApi.GetEngineCompFactory().CreateFrameAniControl(frameEntityId)
comp.Play()

# SetDeepTest

客户端

method in mod.client.component.frameAniControlComp.FrameAniControlComp

  • 描述

    设置序列帧是否透视,默认为否

  • 参数

    参数名
    数据类型
    说明
    deepTest bool False表示透视,则被物体/方块阻挡时仍然能看到序列帧
  • 返回值

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

import mod.client.extraClientApi as clientApi
comp = clientApi.GetEngineCompFactory().CreateFrameAniControl(frameEntityId)
# 设置为透视
comp.SetDeepTest(False)

# SetFaceCamera

客户端

method in mod.client.component.frameAniControlComp.FrameAniControlComp

  • 描述

    设置序列帧是否始终朝向摄像机,默认为是

  • 参数

    参数名
    数据类型
    说明
    face bool True表示朝摄像机
  • 返回值

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

import mod.client.extraClientApi as clientApi
comp = clientApi.GetEngineCompFactory().CreateFrameAniControl(frameEntityId)
# 设置为不始终朝摄像机
comp.SetFaceCamera(False)

# SetFadeDistance

客户端

method in mod.client.component.frameAniControlComp.FrameAniControlComp

  • 描述

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

  • 参数

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

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

import mod.client.extraClientApi as clientApi
comp = clientApi.GetEngineCompFactory().CreateFrameAniControl(frameEntityId)
# 设置该序列帧在与相机距离小于3时会自动调整透明度
comp.SetFadeDistance(3)

# SetGlobal

客户端

method in mod.client.component.frameAniControlComp.FrameAniControlComp

  • 描述

    设置序列帧是否是全局的,默认为否

  • 参数

    参数名
    数据类型
    说明
    isGlobal bool True为全局,False为非全局
  • 返回值

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

    • 全局时,不会因摄像机的视野范围而被裁剪
  • 示例

import mod.client.extraClientApi as clientApi
comp = clientApi.GetEngineCompFactory().CreateFrameAniControl(frameEntityId)
comp.SetGlobal(True)

# SetLayer

客户端

method in mod.client.component.frameAniControlComp.FrameAniControlComp

  • 描述

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

  • 参数

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

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

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

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

# SetLoop

客户端

method in mod.client.component.frameAniControlComp.FrameAniControlComp

  • 描述

    设置序列帧是否循环播放,默认为否

  • 参数

    参数名
    数据类型
    说明
    loop bool True表示循环播放
  • 返回值

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

import mod.client.extraClientApi as clientApi
comp = clientApi.GetEngineCompFactory().CreateFrameAniControl(frameEntityId)
# 设置为循环播放
comp.SetLoop(True)

# SetMixColor

客户端

method in mod.client.component.frameAniControlComp.FrameAniControlComp

  • 描述

    设置序列帧混合颜色

  • 参数

    参数名
    数据类型
    说明
    color tuple(float,float,float,float) 颜色的RGBA值,范围0-1
  • 返回值

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

import mod.client.extraClientApi as clientApi
comp = clientApi.GetEngineCompFactory().CreateFrameAniControl(frameEntityId)
# 设置颜色为红色半透明
color = (1, 0, 0, 0.5)
comp.SetMixColor(color)

# SetPos

客户端

method in mod.client.component.frameAniTransComp.FrameAniTransComp

  • 描述

    设置序列帧的位置

  • 参数

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

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

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

# SetRot

客户端

method in mod.client.component.frameAniTransComp.FrameAniTransComp

  • 描述

    设置序列帧的旋转

  • 参数

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

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

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

# SetRotUseZXY

客户端

method in mod.client.component.frameAniTransComp.FrameAniTransComp

  • 描述

    设置序列帧的旋转,旋转顺序按照绕z,x,y轴旋转

  • 参数

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

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

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

# SetScale

客户端

method in mod.client.component.frameAniTransComp.FrameAniTransComp

  • 描述

    设置序列帧的缩放

  • 参数

    参数名
    数据类型
    说明
    scale tuple(float,float,float) 对于平面序列帧,第一个参数为贴图横向上的缩放,第二个参数为纵向上的缩放,第三个参数无用。对于环状序列帧,为三个坐标轴上的缩放
  • 返回值

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

import mod.client.extraClientApi as clientApi
comp = clientApi.GetEngineCompFactory().CreateFrameAniTrans(frameEntityId)
# 横向拉伸为2倍,纵向不变
comp.SetScale((2, 1, 1))

# SetUsePointFiltering

客户端

method in mod.client.component.frameAniControlComp.FrameAniControlComp

  • 描述

    设置序列帧是否使用点滤波

  • 参数

    参数名
    数据类型
    说明
    use bool True为使用点滤波,False为使用双线性插值(默认使用)
  • 返回值

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

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

import mod.client.extraClientApi as clientApi
comp = clientApi.GetEngineCompFactory().CreateFrameAniControl(frameEntityId)
# 设置该序列帧使用点滤波
comp.SetUsePointFiltering(True)

# Stop

客户端

method in mod.client.component.frameAniControlComp.FrameAniControlComp

  • 描述

    停止序列帧(不是暂停)

  • 参数

  • 返回值

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

import mod.client.extraClientApi as clientApi
comp = clientApi.GetEngineCompFactory().CreateFrameAniControl(frameEntityId)
comp.Stop()