8. 读取特效

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

效果:

在 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作为定位点,你可以看下那个飞轮的地面大招那个带毒的旋风,和那个吸心都是类似此做法做的,那个旋风的轨迹基本就是这样做的,只是他带的是旋转。所以看到的是绕角色转圈圈

推荐标签 标签

  • B3log

    B3log 是一个开源组织,名字来源于“Bulletin Board Blog”缩写,目标是将独立博客与论坛结合,形成一种新的网络社区体验,详细请看 B3log 构思。目前 B3log 已经开源了多款产品:SymSoloVditor思源笔记

    1063 引用 • 3455 回帖 • 168 关注
  • HBase

    HBase 是一个分布式的、面向列的开源数据库,该技术来源于 Fay Chang 所撰写的 Google 论文 “Bigtable:一个结构化数据的分布式存储系统”。就像 Bigtable 利用了 Google 文件系统所提供的分布式数据存储一样,HBase 在 Hadoop 之上提供了类似于 Bigtable 的能力。

    17 引用 • 6 回帖 • 60 关注
  • 持续集成

    持续集成(Continuous Integration)是一种软件开发实践,即团队开发成员经常集成他们的工作,通过每个成员每天至少集成一次,也就意味着每天可能会发生多次集成。每次集成都通过自动化的构建(包括编译,发布,自动化测试)来验证,从而尽早地发现集成错误。

    15 引用 • 7 回帖
  • GitBook

    GitBook 使您的团队可以轻松编写和维护高质量的文档。 分享知识,提高团队的工作效率,让用户满意。

    3 引用 • 8 回帖
  • RYMCU

    RYMCU 致力于打造一个即严谨又活泼、专业又不失有趣,为数百万人服务的开源嵌入式知识学习交流平台。

    4 引用 • 6 回帖 • 53 关注
  • 反馈

    Communication channel for makers and users.

    126 引用 • 930 回帖 • 270 关注
  • AWS
    11 引用 • 28 回帖 • 10 关注
  • 叶归
    5 引用 • 16 回帖 • 7 关注
  • 招聘

    哪里都缺人,哪里都不缺人。

    189 引用 • 1057 回帖
  • CSDN

    CSDN (Chinese Software Developer Network) 创立于 1999 年,是中国的 IT 社区和服务平台,为中国的软件开发者和 IT 从业者提供知识传播、职业发展、软件开发等全生命周期服务,满足他们在职业发展中学习及共享知识和信息、建立职业发展社交圈、通过软件开发实现技术商业化等刚性需求。

    14 引用 • 155 回帖
  • 微服务

    微服务架构是一种架构模式,它提倡将单一应用划分成一组小的服务。服务之间互相协调,互相配合,为用户提供最终价值。每个服务运行在独立的进程中。服务于服务之间才用轻量级的通信机制互相沟通。每个服务都围绕着具体业务构建,能够被独立的部署。

    96 引用 • 155 回帖
  • 导航

    各种网址链接、内容导航。

    43 引用 • 177 回帖
  • 国际化

    i18n(其来源是英文单词 internationalization 的首末字符 i 和 n,18 为中间的字符数)是“国际化”的简称。对程序来说,国际化是指在不修改代码的情况下,能根据不同语言及地区显示相应的界面。

    8 引用 • 26 回帖 • 2 关注
  • Bug

    Bug 本意是指臭虫、缺陷、损坏、犯贫、窃听器、小虫等。现在人们把在程序中一些缺陷或问题统称为 bug(漏洞)。

    76 引用 • 1742 回帖
  • Ubuntu

    Ubuntu(友帮拓、优般图、乌班图)是一个以桌面应用为主的 Linux 操作系统,其名称来自非洲南部祖鲁语或豪萨语的“ubuntu”一词,意思是“人性”、“我的存在是因为大家的存在”,是非洲传统的一种价值观,类似华人社会的“仁爱”思想。Ubuntu 的目标在于为一般用户提供一个最新的、同时又相当稳定的主要由自由软件构建而成的操作系统。

    127 引用 • 169 回帖
  • 阿里巴巴

    阿里巴巴网络技术有限公司(简称:阿里巴巴集团)是以曾担任英语教师的马云为首的 18 人,于 1999 年在中国杭州创立,他们相信互联网能够创造公平的竞争环境,让小企业通过创新与科技扩展业务,并在参与国内或全球市场竞争时处于更有利的位置。

    43 引用 • 221 回帖 • 71 关注
  • Spring

    Spring 是一个开源框架,是于 2003 年兴起的一个轻量级的 Java 开发框架,由 Rod Johnson 在其著作《Expert One-On-One J2EE Development and Design》中阐述的部分理念和原型衍生而来。它是为了解决企业应用开发的复杂性而创建的。框架的主要优势之一就是其分层架构,分层架构允许使用者选择使用哪一个组件,同时为 JavaEE 应用程序开发提供集成的框架。

    947 引用 • 1460 回帖
  • 互联网

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

    99 引用 • 367 回帖
  • GitLab

    GitLab 是利用 Ruby 一个开源的版本管理系统,实现一个自托管的 Git 项目仓库,可通过 Web 界面操作公开或私有项目。

    46 引用 • 72 回帖 • 1 关注
  • ZeroNet

    ZeroNet 是一个基于比特币加密技术和 BT 网络技术的去中心化的、开放开源的网络和交流系统。

    1 引用 • 21 回帖 • 644 关注
  • CentOS

    CentOS(Community Enterprise Operating System)是 Linux 发行版之一,它是来自于 Red Hat Enterprise Linux 依照开放源代码规定释出的源代码所编译而成。由于出自同样的源代码,因此有些要求高度稳定的服务器以 CentOS 替代商业版的 Red Hat Enterprise Linux 使用。两者的不同在于 CentOS 并不包含封闭源代码软件。

    239 引用 • 224 回帖
  • Solidity

    Solidity 是一种智能合约高级语言,运行在 [以太坊] 虚拟机(EVM)之上。它的语法接近于 JavaScript,是一种面向对象的语言。

    3 引用 • 18 回帖 • 435 关注
  • 链书

    链书(Chainbook)是 B3log 开源社区提供的区块链纸质书交易平台,通过 B3T 实现共享激励与价值链。可将你的闲置书籍上架到链书,我们共同构建这个全新的交易平台,让闲置书籍继续发挥它的价值。

    链书社

    链书目前已经下线,也许以后还有计划重制上线。

    14 引用 • 257 回帖 • 1 关注
  • Anytype
    3 引用 • 31 回帖 • 16 关注
  • Google

    Google(Google Inc.,NASDAQ:GOOG)是一家美国上市公司(公有股份公司),于 1998 年 9 月 7 日以私有股份公司的形式创立,设计并管理一个互联网搜索引擎。Google 公司的总部称作“Googleplex”,它位于加利福尼亚山景城。Google 目前被公认为是全球规模最大的搜索引擎,它提供了简单易用的免费服务。不作恶(Don't be evil)是谷歌公司的一项非正式的公司口号。

    49 引用 • 192 回帖
  • Sym

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

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

    524 引用 • 4601 回帖 • 702 关注
  • Kotlin

    Kotlin 是一种在 Java 虚拟机上运行的静态类型编程语言,由 JetBrains 设计开发并开源。Kotlin 可以编译成 Java 字节码,也可以编译成 JavaScript,方便在没有 JVM 的设备上运行。在 Google I/O 2017 中,Google 宣布 Kotlin 成为 Android 官方开发语言。

    19 引用 • 33 回帖 • 79 关注