从0开始学游戏开发
蔡能
原网易游戏引擎架构师,资深游戏底层技术专家
立即订阅
5825 人已学习
课程目录
已完结 41 讲
0/4登录后,你可以任选4讲全文学习。
开篇词 (1讲)
开篇词 | 跟我学,你也可以开发一款游戏!
免费
第一章:游戏开发基础知识 (5讲)
第1讲 | 游戏开发需要了解哪些背景知识?
第2讲 | 2D游戏和3D游戏有什么区别?
第3讲 | 游戏的发动机:游戏引擎
第4讲 | 底层绘图接口的妙用
第5讲 | 构建游戏场景的武器:地图编辑器
第二章:客户端开发 (10讲)
第6讲 | 从0开始整理开发流程
第7讲 | 如何建立一个Windows窗体?
第8讲 | 如何区分图形和图像?
第9讲 | 如何绘制游戏背景?
第11讲 | 如何载入“飞机”和“敌人”?
第12讲 | 如何设置图像的前后遮挡?
第14讲 | 如何设置精灵的变形、放大和缩小?
第15讲 | 如何设置淡入淡出和碰撞检测?
第17讲 | 如何制作游戏资源包和保存机制?
第18讲 | 如何载入背景音乐和音效?
第三章:UI和键盘鼠标 (3讲)
第20讲 | 如何在游戏中载入UI和菜单?
第21讲 | 如何用鼠标和键盘来操作游戏?
第23讲 | 如何判断客户端的网络连接?
第四章:脚本语言 (3讲)
第24讲 | 如何嵌入脚本语言?
第26讲 | 脚本语言在游戏开发中有哪些应用?
第27讲 | 如何使用脚本语言编写周边工具?
第五章:服务器端开发 (6讲)
第29讲 | 如何选择合适的开发语言?
第30讲 | 如何定制合适的开发协议?
第32讲 | 不可忽视的多线程及并发问题
第33讲 | 如何判断心跳包是否离线?
第35讲 | 如何用网关服务器进行负载均衡?
第36讲 | 如何制作游戏内容保存和缓存处理?
第六章:热点剖析 (9讲)
第10讲 | 热点剖析(一):HTML5技术是如何取代Flash的?
第13讲 | 热点剖析(二):如何选择一款HTML5引擎?
第16讲 | 热点剖析(三):试试看,你也可以编写一款HTML5小游戏!
第19讲 | 热点剖析(四):安卓端和苹果端游戏开发有什么区别?
第22讲 | 热点剖析(五):如何选择移动端的游戏引擎?
第25讲 | 热点剖析(六):AR和人工智能在游戏领域有哪些应用?
第28讲 | 热点剖析(七):谈谈微信小游戏的成功点
第31讲 | 热点剖析(八):谈谈移动游戏的未来发展
第34讲 | 热点剖析(九):谈谈独立开发者的未来发展
加餐 (3讲)
复习课 | 带你梳理客户端开发的三个重点
课后阅读 | 游戏开发工程师学习路径(上)
课后阅读 | 游戏开发工程师学习路径(下)
结束语 (1讲)
结束语 | 做游戏的过程就像是在雕琢一件艺术品
从0开始学游戏开发
登录|注册

第15讲 | 如何设置淡入淡出和碰撞检测?

蔡能 2018-06-28
我们在前一节,学习了精灵的变形、放大和缩小,并且学习了如何使用精灵类和组的概念来管理精灵,制成动画。今天,我将带你学习淡入淡出和碰撞热点的判断。
所谓的淡入淡出,就是英文的 fade-infade-out。淡入淡出在电影、游戏、CG、操作系统、手机 UI、应用等等各种地方随处可见。那究竟什么是淡入淡出呢?它在游戏中究竟如何实现呢?在我们的打飞机游戏中,什么时候会用到这个操作呢?

什么是淡入淡出?

不知道你有没有注意,在我们玩过的打飞机游戏中,当每一关游戏开始的时候,都会有个游戏画面逐渐出现的过程。短短几秒,从无到有,整个画面就呈现在你眼前了。同样,每一关结束的时候,也会有个画面逐渐消失的过程。
画面效果讲,这个画面从有到逐渐屏幕变暗,直到消失,或者反过来,由暗逐渐变亮,到完全进入画面的过程,就叫做淡入淡出。从声音角度讲,也存在淡入淡出,比如音乐从无声到逐渐有声,或者从有声到逐渐无声。
在 Pygame 中并不存在“画面的淡入淡出”这样的函数,需要我们自己去实现这样的功能。
首先,如果我们想给这张图片进行淡入淡出的处理的话,就需要对它进行 alpha 混合处理。我们在前面谈到过 alpha 混合,你可以理解成半透明,但是 alpha 混合究竟是什么呢?
取消
完成
0/1000字
划线
笔记
复制
© 版权归极客邦科技所有,未经许可不得传播售卖。 页面已增加防盗追踪,如有侵权极客邦将依法追究其法律责任。
该试读文章来自付费专栏《从0开始学游戏开发》,如需阅读全部文章,
请订阅文章所属专栏。
立即订阅
登录 后留言

精选留言(7)

  • 三硝基甲苯
    想了一下。应该可以利用颜色的alpha的值,就在文中的代码里多判断一次alpha值,如果有相交的时候,就检测两个两个碰撞点的alpha值,因为透明图片alpha不是0就是255(应该吧,我觉得应该是这样)所以 当两个点都不是透明的时候就是碰撞到了。反之就是没有碰撞

    作者回复: 对了一半,有一种直接的做法是通过蒙皮完成的,也就是美术多做一份外框的图,如果接触面不是外框,那就是内部某个区域了,这么判断,缺点是增加资源和内存消耗。

    2018-07-08
    2
  • 赵鹏
    pygame没有提供基本的碰撞检测,这点其实很遗憾……

    作者回复: 可以自己模拟

    2019-01-29
  • slark
    如果可以获得两个物体然后进行与操作看是否为空。不过这个又涉及到要自己处理物体的轮廓
    2018-07-30
  • 阿森
    文中的输入坐标(100,300+y1),全改成(100,600+y1)就检测不到了
    2018-07-23
  • 阿森
    为什么把飞机的初始y坐标改大一点,碰撞检测就不起作用了呢,全输出False

    作者回复: 怎么改大的?

    2018-07-22
  • 以往
    先获取两张图的轮廓,再逐点判断两组轮廓有没有重叠
    2018-07-03
  • 大叔难当
    把图片拆分,比如机翼和机身作为两个不同对象载入屏幕,各自有自己的碰撞检测函数,至于能不能实现把机翼和机身放在同一个组中,还在思考
    2018-07-02
收起评论
7
返回
顶部