# 中国版特效的使用

在我的世界中国版中的特效,有两种:

  • 微软特效
  • 中国版特效

微软特效是游戏原生支持的特效,使用/particle原版指令来生成。

中国版特效基于特效编辑器来制作,可以实现更多效果的特效。

中国版特效主要有两种形式,它们应用的场景各不相同

  • 序列帧特效:通过在场景中绘制一张单面片的贴图,在这个贴图上不断的更换新的图片,这个过程形成完整的序列帧特效。
  • 粒子特效:通过在场景中生成大量粒子图像来产生视觉效果,每个粒子都代表着效果中的单个元素,所有的粒子组合起来就形成了完整的粒子特效。

特效编辑器的使用教程,可以参考官方文档 (opens new window)。本教程将主要介绍,如何使用官方内容库中的现成的特效,将其使用到开服工具2.0制作的网络游戏中。

# 素材下载和导入

开发者工作台的内容库中,包含了众多已经编辑好的特效包,可以供开发者自由使用。

本教程中,下载代号羲和特效包,并以该特效包为例,介绍如何在游戏中使用这些特效。

点击下载按钮后,我们可以新建一个空白基岩版附加包,用来导入、调试这个特效。

打开编辑器后,在左上角选择特效,切换到特效编辑器。

在编辑器打开的情况下,切换到开发者工作台的内容库,点击导入按钮,即可导入特效包。

弹出的对话框,全选导入即可。

这时在资源管理窗口中,切换到中国版特效分类,就可以看到所有我们导入的特效。

如果需要预览特效,可以将特效拖动到模型挂接的窗口中,然后点击播放按钮进行播放。

比如将Attack_2这个特效,拖动到head上,可以看到它是粒子特效。点击时间轴的播放按钮,就可以看到特效在玩家模型头部被播放。

选中Attack_2这个特效后,右侧属性窗口可以看到粒子特效的相关属性设置。

主要包括粒子的尺寸、速度、旋转、发射器的设置等等参数。

除此之外,资源包中还有部分序列帧特效,例如test_xuanyun这个特效。挂接播放后可以看到,它就是一个不断变化的图片。

属性窗口中也只有贴图相关选项,没有粒子的发射器等参数。

# 使用代码控制播放

我们可以首先新建一个插件,比如这里名为testEffects,删除其developer_mods的内容后,复制到Mod目录。

然后对刚刚创建的空白附加包右键,打开目录

将资源包目录中的effects,particles,textures文件夹,复制到插件的资源包目录。

这三个文件夹 分别存放了中国版特效原版特效材质,如果需要完整的使用特效包内的特效,缺一不可。

# 粒子

接下来就是代码编写的部分,模组SDK内提供了丰富的接口来控制特效的播放,参考链接 (opens new window)

例如我们可以将播放特效的代码封装到一个函数内,然后另外编写监听来自服务器的事件的代码,通过服务器控制粒子特效的播放。

def PlayEffect(self, effectName, pos):
    particleEntityId = self.CreateEngineParticle(effectName, pos)
    particleControlComp = clientApi.GetEngineCompFactory().CreateParticleControl(particleEntityId)
    particleControlComp.Play()
    return particleEntityId

例如监听来自服务端的PlayEffectEvent,播放特效,服务端的部分大同小异,这里不再介绍。

def __init__(self, namespace, systemName):
    ClientSystem.__init__(self, namespace, systemName)
    self.ListenForEvent(EffectsConst.ModName, EffectsConst.ServerSystemName, "PlayEffectEvent", self, self.OnPlayEffect)

def OnPlayEffect(self, args):
    name = args["name"]
    pos = tuple(args["pos"])
    particleId = self.PlayEffect(name, pos)
    print "播放了特效,实体id", particleId

# 序列帧

序列帧的播放控制代码和粒子略有不同,参考文档 (opens new window)

主要通过两个接口创建序列帧特效:

  • CreateEngineSfx
  • CreateEngineSfxFromEditor

推荐使用CreateEngineSfxFromEditor,可以按照编辑器中编辑好的参数创建序列帧。支持环状序列帧。

在完成创建后,也可以使用其他接口对序列帧特效进行控制,使用上和粒子特效大同小异。

素材下载和导入

使用代码控制播放

粒子

序列帧