在我们的2D图形游戏中不可缺少大量的光影、技能特效,像Diablo II中的魔法效果的实现,幸好我们拥有强大的CPU来为我们实现Alpha混合与色彩饱和混合,接下来让我们来讨论一下如何用这些方法来实现我们游戏中所需要的技能特效。

一、Alpha混合特效
    Alpha混合可以让我们让我们将一张图象按一定程度的比例与另一张图象进行混合(如图 1),但普通的Alpha混合并不适合游戏中的技能特效的显示,这时候我们只需要添加一些数据让混合更准确些,为了实现这样的效果,我们往图象中加入 Alpha通道数据(如图2),然后我们再根据通道数据来进行混合就可得到如图3的混合效果,现在看起来是不是更像特效了。
    不过问题始终还是有的,只要仔细观察,不难发现在图3中的特效周围有黑影,这似乎给我们的技 能效果添加了一点瑕疵,为什么会这样?因为我们的程式是根据图象上的通道数据来进行不同程度的Alpha混合处理,但在特效边缘实际上RGB色彩值更接近 于黑色(R=0、G=0、B=0),一旦这样混合后,周围肯定会产生黑边,不过可以放心,这里我们可以用一个简单的技巧来轻松避免黑边的产生,那就是将图 2中的RGB色彩图用灰色背景来填充,这样在混合之后就没有黑边,至少看起来没有以前明显了,这里没有最后效果图,最后的效果还是由你自己的程式来实现 吧。

二、色彩饱和特效

与Alpha混合相比,色彩饱和更适合于特效的制作,无论从性能上讲,还是从效果上说,色彩饱和比Alpha混合更胜一筹(如图4)。可能因为色彩饱和的算法过于简单,很少有进行介绍的,我们先就对色彩饱和的方法来进行介绍一下,混合公式:

R1、G1、B1 : 图象像素点的源色值;

R2、G2、B2 : 底图像素点的源色值;

R = R1 + R2;( IF R > 255 THEN R = 255 )

G = G1 + G2;( IF G > 255 THEN G = 255 )

B = B1 + B2;( IF B > 255 THEN B = 255 )

R、G、B就是我们所需的混合结果。

可能你会觉得这么复杂的计算怎么会在性能上优于Alpha混合,当然,如果你所使用到的 只是CPU的常规指令,那的确,在性能上没有Alpha快,但现在MMX指令已经作为CPU的基本指令,MMX指令中就有一个饱和加的CPU指令,可以非常方便的进行操作,不得不感谢CPU制造商所做的功劳。

好了,两种方式都介绍了,可以说这基本上已经可以胜任2D游戏中所需要,接下来就让我们来让游戏更精彩。

Unity3D教程:2D游戏技能特效相关推荐

  1. 微信小游戏开发教程-2D游戏原理讲解

    微信小游戏开发教程-2D游戏原理讲解 原理 为了更加形象的描述,这里先上一张图: 背景 a. 首先,我们看到背景好像是一张无限长的图片在向下移动.实际则不然,这是一张顶部和底部刚好重叠的图片.这是一种 ...

  2. Unity3D游戏开发之使用Unity3D开发2D游戏 (一)

    今天要和大家分享的是基于Unity3D开发2D游戏,博主一直钟爱于国产武侠RPG,这个我在开始写Unity3D游戏开发系列文章的时候就已经说过了,所以我们今天要做的就是利用Unity3D来实现在2D游 ...

  3. 安利超实用的游戏技能特效素材!

    一款优质的游戏发布之后还需要进一步对它进行优化,例如游戏特效.技能:王者荣耀能长期备受欢迎,必然离不开后期的优化--不断增加新英雄,优化英雄技能,新增英雄皮肤.皮肤特效......今天小编为大家带来了 ...

  4. 使用Unity3D制作2D游戏的重点做法

    官网上有提供一个2D游戏的教学范例,这个游戏只不过把镜头摆放在横向位置跟随角色移动,游戏内物件运动时固定一个轴不动,使他像横轴式的2D游戏来玩,本质上其实还是个3D游戏,所以如果没有3D建模的话不就没 ...

  5. Unity3d制作2D游戏飞翔的小鸟(FlappyBird)

    目录 一.学习方向 二.制作步骤 1.新建项目 3.设置为精灵模式 4.精灵图像分割 5.场景布局设置 6.录制小鸟飞翔动画 7.构建飞翔的小鸟让其响应 8.构建UI对象并让其响应 9.构建游戏背景并 ...

  6. U3d学习-使用Unity3D开发2D游戏(上)

    1.创建一个项目 2.将Camera设置为正交投影 游戏的输出画面是通过摄像机所观察的场景来实现的,将场景呈现到2D的计算机屏幕上具有两种不同的投影方式:透视投影和正交投影,默认状态下是透视投影. 透 ...

  7. Unity3D游戏开发之使用Unity3D开发2D游戏(二)(2DTookit插件亲测)

    大家好,今天博主继续为大家带来Unity3D游戏开发系列文章,我们接着在上一篇文章中最后留下的那几个问题来讲解Unity3D游戏开发的相关知识.在上一篇文章最后,我们留了这样几个问题: 1.人物范围控 ...

  8. Unity3D游戏开发之仿仙剑奇侠传一2D游戏 (一)

    今天要和大家分享的是基于Unity3D开发2D游戏,博主一直钟爱于国产武侠RPG,这个我在开始写Unity3D游戏开发系列文章的时候就已经说过了,所以我们今天要做的就是利用Unity3D来实现在2D游 ...

  9. 2D游戏开发 - SkyGameEngine2d 引擎架构 | 目录结构 | 引擎入口点

    2D游戏开发 - SkyGameEngine2d 引擎架构 | 目录结构 | 引擎入口点 一.引擎架构 二.引擎目录 2.1 src目录介绍 三.项目目录 四.引擎框架入口点分析 4.1 main.c ...

最新文章

  1. 深度探索C++ 对象模型(5)-Initialization list(1)
  2. C#中实现鼠标拖动窗体的方法
  3. 从特征分解到协方差矩阵:详细剖析和实现PCA算法
  4. 【JAVA基础篇】面对对象的特征
  5. python __new__中单例的作用
  6. python画超长图-Python 拼接多张尺寸大小不一样的图片制作长图
  7. updateStateByKey算子入门案例之wordCount
  8. jQuery-JS在iframe中获取父页面的值
  9. 百度的71个非常厉害的开源项目
  10. 湖南麒麟实时操作系统调优指南
  11. 2022阿里巴巴全球数学竞赛 第4题 虎虎生威(盲盒问题、集卡问题)解决思路
  12. 聊聊大数据平台上云这点事
  13. Python之条件竞争
  14. RestAssured接口测试框架
  15. [ISSUE]angularjs resolve: $injector:unpr] Unknown provider:
  16. Ubuntu 18.04 vscode 编辑器空格显示过小问题解决方案
  17. SUN J2EE企业应用技术学习计划
  18. 理解C#值类型与引用类型
  19. 语音amr文件转换为mp3文件
  20. tf.keras.layers.Layer自定义层

热门文章

  1. MATLAB可以使用但是使用help函数报错问题的解决
  2. Flowable Exclusive gateway has no outgoing sequence flow
  3. 【科普】浅谈NB-IoT
  4. 开启硬件辅助虚拟化——Intel虚拟化之旅
  5. 哗哗地照样子写词语_描写哗哗的词语
  6. web前端高级React - React从入门到进阶之React条件渲染
  7. 【分布式监控系统】第3章——监控客户端开发
  8. 数据同步工具—DataX部署使用
  9. ev3和python哪个好_python+lego ev3的心得总结 随时更新
  10. SaaS、PaaS、IaaS、DaaS、BaaS简介