8. 读取特效

本贴最后更新于 1905 天前,其中的信息可能已经时异事殊

效果:

在 p0.pose 里的一些动画里都会有 EffectID 项。这个项指定了,当播放此动画的第一帧的时候会播放一个特效
特效也就是 sfx 目录下的后缀为.ef 的文件

首先,游戏里的特效是分类型的,全部类型有
BOX 立体模型
AUDIO 声音
PLANE 平面特效
DONUT 圆环特效
MODEL 物品特效,读取 des 文件作为模型,类似雪人套装和手机就这么弄得
SPHERE 球体特效
PARTICLE 粒子特效
CYLINDER 圆柱模型、
BILLBOARD 公告板特效
FLAG 一般用来挂载 受击打位置的特效显示,流血刀光一类
这些参考了网上查的资料

一般一个特效是.ef 文件,一个 ef 内部包含数个小的特效,有粒子,平面,立方体,圆球,圆柱(顶半径为 0 则圆锥都是 Cylinder),圆环,声音,广告牌之类
这些特效都有一个特点,就是他们是用参数指定给程序,让程序即时绘制的,这点很重要,之前准备对每个类型的资源做个标准大小,然后按照他设置的尺寸缩放,之后发觉无论如何,经过每一帧的缩放后,总是位置不对
在 unity 里习惯了指定预设完事,而要还原流星的特效就必须代码生成 Plane ,Sphere, Cylinder, Box 的网格,这个搞定之后
特效里有部分参数,设置了特效跟随着谁一起移动,又设置了跟随谁一起旋转,最后就是最麻烦的,因为一个特效都有很多帧,帧里会设置位置,那么这个位置,之前还原的时候,一直都是世界坐标
一般一个特效会存在 1-2 个骨骼,1 个用来跟随移动,1 个用来相对移动, 就是根据跟随物体的自身坐标系空间,来进行一个移动,这个移动是一个差值,也就是其中一个骨骼指定的物体的某个轴方向上移动动画帧设置的距离,所以之前坐标一直不对
而现在基本把流星的特效全部还原了。

CYLINDER 圆柱体特效,会根据设定的参数生成指定大小的圆柱模型,而不是直接拿美术模型来用
在使用匕首上上 A 时,特效在帧动画参数结束后,会有一些额外参数
0, 3, 30,40,90,450 理解为圆柱体,头一个 0 是程序读 ef 文件算长度的,后面的顶部半径(3) 底部半径(30),高度 40,另外 90,450 这两个参数不明白什么意思,但是改了也会引起特效变化
而匕首后 A 时,特效的三个参数变为
0,0,5 ,5,90,450 同样的意思,因为匕首后 A 体现刺的感觉,所以圆柱体特效尖端很细(在这里为 0 表示成为圆锥体)。这个顶部 0,底部 5,高度 5 的圆锥,经过特效的缩放参数,和动画帧中的四元数设置,让特效尖端保持与匕首尖端一致位置
所以可以看到很多圆柱体特效,但是特效样子都不一样,这就是因为这个网格模型是经过参数生成的,而不是固定的一个美术资源。

但是这些值里,单位应该是不一致的,顶部半径和底部半径,可能都是用实际米,高度,填 5 跟角色差不多高,而角色高度 36 左右,这点还需验证
现在代码里是以单位为米计算的。

特效的生命周期
特效一般会从 pose 里调用,动作播放的第一帧,就会播放特效,而特效的最后一帧的时刻就是删除时刻

特效与动作的配合
类似匕首 pose259 动作,播放特效时会产生一个攻击盒,这个盒子会随着动作一起移动,然后在 259 的攻击帧内开启攻击盒,如果动作播放的速率,与特效不匹配,那么可能攻击盒会在动作播放完毕前就被删除,所以要让动作完全按照制作时的 30 帧/S 来算插值
对接到 unity 的帧率上,比如如果 unity 是 60fps,那么原版动作像被加速运行一样,必须在 update 里重新计算动作缩放比
在 unity 里 QualitySetting 里 vsyncCount 的值决定了同步方式
Dont sync 表示不垂直同步,这种情况是尽高帧率跑。
Every V Blank 每 1 次垂直扫描归位一次同步 PC 上尽量以 60 帧/S 跑
Every Second V Blank 每 2 次垂直扫描归位一次同步 PC 表示尽量以 30 帧/S 跑

感觉跟时间有关系的东西,都麻烦的很,在 3 种同步方式下,我都不知道 Update 在 1 秒里被调用了多少次
以下是在 pc 上测试 unity 5.4.1f1 的 update 调用.
不垂直同步下,数值不稳定,认为没有什么意义 大部分数值比开了同步要大的多,一般在 90-105 左右 time.deltatime 不稳定数值浮动大
1 倍垂直同步 1 秒约调用 update 50 次 time.deltatime = 0.016-0.017
2 倍垂直同步 1 秒约调用 update 30 次 time.deltatime = 0.0333 特殊情况下 会存在 0 time.deltatime = 0.005
这样看来,用 update 里每一帧时间的增量来算动作插值应该是可以的,只要避免跳帧。

现在就来修改动画播放受垂直同步帧率影响的问题。
发觉好像是显卡问题,有时候像鬼畜一样,帧率嗖嗖的起来了,有时候又很正常,不清楚这个帧率受什么影响
一个好游戏,帧率稳定非常关键,而且帧率过高并不全是好处,到了人眼识别范围外,就没有必要了,费电不说,
像原版流星 fps 高了之后,跳不起来,这算是个 bug 吧.

相关帖子

2 回帖

欢迎来到这里!

我们正在构建一个小众社区,大家在这里相互信任,以平等 • 自由 • 奔放的价值观进行分享交流。最终,希望大家能够找到与自己志同道合的伙伴,共同成长。

注册 关于
请输入回帖内容 ...
  • someone

    版主Winson您好, 想請教一下; 原版流星飛行類武器是預設無法加載於其飛行時的武器首端和末端嗎 ? 原先打算把光球特效light.ifl加載於飛行中的飛輪上, 跟飛輪一起移動, 做出七龍珠飲茶操氣彈的效果:

    https://www.google.com.hk/search?q=%E6%93%8D%E6%B0%A3%E5%BD%83&client=firefox-b&dcr=0&source=lnms&tbm=isch&sa=X&ved=0ahUKEwj9hceMjaPYAhVFI5QKHYboCTsQ_AUICigB&biw=1280&bih=606#imgdii=HlVp111IPl0VlM:&imgrc=tzJ4J76NbzEfqM:

    但光球結果停留在右手, 飛輪卻自顧自地飛出去攻擊敵人:scream: .

  • someone

    谷歌中国访问不了啊。飞行类武器应该都是代码临时生成的物件,如果是飞镖应该是有一个重力模拟类似抛物线过程的吧,轨迹中碰到敌人就算伤害,如果碰到场景物应该会销毁掉,火枪可能是用一条射线碰到的首个障碍物处播放一个特效,然后看射线是否碰到敌人了来算伤害的吧,飞轮可能是朝攻击目标算了轨迹曲线之类的,轨迹去的路上碰到第一个敌人开始返回,回的路上所有碰到的人全部受击。飞轮比较特殊的。现在这些飞行武器我也还没实现
    你要做的这种效果,可以新增个特效A,按照在角色面前10码,20码,30码,设置几个动画帧,把时间什么设置好,然后再增加其他特效,以A作为定位点,你可以看下那个飞轮的地面大招那个带毒的旋风,和那个吸心都是类似此做法做的,那个旋风的轨迹基本就是这样做的,只是他带的是旋转。所以看到的是绕角色转圈圈

推荐标签 标签

  • 深度学习

    深度学习(Deep Learning)是机器学习的分支,是一种试图使用包含复杂结构或由多重非线性变换构成的多个处理层对数据进行高层抽象的算法。

    40 引用 • 40 回帖 • 1 关注
  • ActiveMQ

    ActiveMQ 是 Apache 旗下的一款开源消息总线系统,它完整实现了 JMS 规范,是一个企业级的消息中间件。

    19 引用 • 13 回帖 • 626 关注
  • Sillot

    Sillot (汐洛)孵化自思源笔记,致力于服务智慧新彖乄,具有彖乄驱动、极致优雅、开发者友好的特点
    Github 地址:https://github.com/Hi-Windom/Sillot

    15 引用 • 6 回帖 • 28 关注
  • 互联网

    互联网(Internet),又称网际网络,或音译因特网、英特网。互联网始于 1969 年美国的阿帕网,是网络与网络之间所串连成的庞大网络,这些网络以一组通用的协议相连,形成逻辑上的单一巨大国际网络。

    96 引用 • 330 回帖
  • IBM

    IBM(国际商业机器公司)或万国商业机器公司,简称 IBM(International Business Machines Corporation),总公司在纽约州阿蒙克市。1911 年托马斯·沃森创立于美国,是全球最大的信息技术和业务解决方案公司,拥有全球雇员 30 多万人,业务遍及 160 多个国家和地区。

    16 引用 • 53 回帖 • 123 关注
  • Unity

    Unity 是由 Unity Technologies 开发的一个让开发者可以轻松创建诸如 2D、3D 多平台的综合型游戏开发工具,是一个全面整合的专业游戏引擎。

    25 引用 • 7 回帖 • 247 关注
  • Spark

    Spark 是 UC Berkeley AMP lab 所开源的类 Hadoop MapReduce 的通用并行框架。Spark 拥有 Hadoop MapReduce 所具有的优点;但不同于 MapReduce 的是 Job 中间输出结果可以保存在内存中,从而不再需要读写 HDFS,因此 Spark 能更好地适用于数据挖掘与机器学习等需要迭代的 MapReduce 的算法。

    74 引用 • 46 回帖 • 548 关注
  • 阿里云

    阿里云是阿里巴巴集团旗下公司,是全球领先的云计算及人工智能科技公司。提供云服务器、云数据库、云安全等云计算服务,以及大数据、人工智能服务、精准定制基于场景的行业解决方案。

    89 引用 • 345 回帖
  • 支付宝

    支付宝是全球领先的独立第三方支付平台,致力于为广大用户提供安全快速的电子支付/网上支付/安全支付/手机支付体验,及转账收款/水电煤缴费/信用卡还款/AA 收款等生活服务应用。

    29 引用 • 347 回帖
  • 职场

    找到自己的位置,萌新烦恼少。

    126 引用 • 1699 回帖
  • 强迫症

    强迫症(OCD)属于焦虑障碍的一种类型,是一组以强迫思维和强迫行为为主要临床表现的神经精神疾病,其特点为有意识的强迫和反强迫并存,一些毫无意义、甚至违背自己意愿的想法或冲动反反复复侵入患者的日常生活。

    15 引用 • 161 回帖 • 5 关注
  • Gitea

    Gitea 是一个开源社区驱动的轻量级代码托管解决方案,后端采用 Go 编写,采用 MIT 许可证。

    4 引用 • 16 回帖
  • Windows

    Microsoft Windows 是美国微软公司研发的一套操作系统,它问世于 1985 年,起初仅仅是 Microsoft-DOS 模拟环境,后续的系统版本由于微软不断的更新升级,不但易用,也慢慢的成为家家户户人们最喜爱的操作系统。

    215 引用 • 462 回帖
  • 服务器

    服务器,也称伺服器,是提供计算服务的设备。由于服务器需要响应服务请求,并进行处理,因此一般来说服务器应具备承担服务并且保障服务的能力。

    124 引用 • 580 回帖
  • Scala

    Scala 是一门多范式的编程语言,集成面向对象编程和函数式编程的各种特性。

    13 引用 • 11 回帖 • 108 关注
  • 生活

    生活是指人类生存过程中的各项活动的总和,范畴较广,一般指为幸福的意义而存在。生活实际上是对人生的一种诠释。生活包括人类在社会中与自己息息相关的日常活动和心理影射。

    228 引用 • 1450 回帖 • 1 关注
  • OpenResty

    OpenResty 是一个基于 NGINX 与 Lua 的高性能 Web 平台,其内部集成了大量精良的 Lua 库、第三方模块以及大多数的依赖项。用于方便地搭建能够处理超高并发、扩展性极高的动态 Web 应用、Web 服务和动态网关。

    17 引用 • 39 关注
  • Sym

    Sym 是一款用 Java 实现的现代化社区(论坛/BBS/社交网络/博客)系统平台。

    下一代的社区系统,为未来而构建

    523 引用 • 4581 回帖 • 690 关注
  • Jenkins

    Jenkins 是一套开源的持续集成工具。它提供了非常丰富的插件,让构建、部署、自动化集成项目变得简单易用。

    51 引用 • 37 回帖
  • SMTP

    SMTP(Simple Mail Transfer Protocol)即简单邮件传输协议,它是一组用于由源地址到目的地址传送邮件的规则,由它来控制信件的中转方式。SMTP 协议属于 TCP/IP 协议簇,它帮助每台计算机在发送或中转信件时找到下一个目的地。

    4 引用 • 18 回帖 • 589 关注
  • SQLServer

    SQL Server 是由 [微软] 开发和推广的关系数据库管理系统(DBMS),它最初是由 微软、Sybase 和 Ashton-Tate 三家公司共同开发的,并于 1988 年推出了第一个 OS/2 版本。

    19 引用 • 31 回帖 • 1 关注
  • Oracle

    Oracle(甲骨文)公司,全称甲骨文股份有限公司(甲骨文软件系统有限公司),是全球最大的企业级软件公司,总部位于美国加利福尼亚州的红木滩。1989 年正式进入中国市场。2013 年,甲骨文已超越 IBM,成为继 Microsoft 后全球第二大软件公司。

    103 引用 • 126 回帖 • 447 关注
  • 安装

    你若安好,便是晴天。

    128 引用 • 1184 回帖
  • Mobi.css

    Mobi.css is a lightweight, flexible CSS framework that focus on mobile.

    1 引用 • 6 回帖 • 697 关注
  • 运维

    互联网运维工作,以服务为中心,以稳定、安全、高效为三个基本点,确保公司的互联网业务能够 7×24 小时为用户提供高质量的服务。

    148 引用 • 257 回帖
  • Telegram

    Telegram 是一个非盈利性、基于云端的即时消息服务。它提供了支持各大操作系统平台的开源的客户端,也提供了很多强大的 APIs 给开发者创建自己的客户端和机器人。

    5 引用 • 35 回帖 • 1 关注
  • OpenShift

    红帽提供的 PaaS 云,支持多种编程语言,为开发人员提供了更为灵活的框架、存储选择。

    14 引用 • 20 回帖 • 604 关注