第13讲 | 如何设置淡入淡出和碰撞检测?
蔡能
该思维导图由 AI 生成,仅供参考
我们在前一节,学习了精灵的变形、放大和缩小,并且学习了如何使用精灵类和组的概念来管理精灵,制成动画。今天,我将带你学习淡入淡出和碰撞热点的判断。
所谓的淡入淡出,就是英文的 fade-in 和 fade-out。淡入淡出在电影、游戏、CG、操作系统、手机 UI、应用等等各种地方随处可见。那究竟什么是淡入淡出呢?它在游戏中究竟如何实现呢?在我们的打飞机游戏中,什么时候会用到这个操作呢?
什么是淡入淡出?
不知道你有没有注意,在我们玩过的打飞机游戏中,当每一关游戏开始的时候,都会有个游戏画面逐渐出现的过程。短短几秒,从无到有,整个画面就呈现在你眼前了。同样,每一关结束的时候,也会有个画面逐渐消失的过程。
从画面效果讲,这个画面从有到逐渐屏幕变暗,直到消失,或者反过来,由暗逐渐变亮,到完全进入画面的过程,就叫做淡入淡出。从声音角度讲,也存在淡入淡出,比如音乐从无声到逐渐有声,或者从有声到逐渐无声。
在 Pygame 中并不存在“画面的淡入淡出”这样的函数,需要我们自己去实现这样的功能。
首先,如果我们想给这张图片进行淡入淡出的处理的话,就需要对它进行 alpha 混合处理。我们在前面谈到过 alpha 混合,你可以理解成半透明,但是 alpha 混合究竟是什么呢?
公开
同步至部落
取消
完成
0/2000
荧光笔
直线
曲线
笔记
复制
AI
- 深入了解
- 翻译
- 解释
- 总结
本文详细介绍了在Pygame中实现淡入淡出效果和碰撞检测的方法。作者首先解释了淡入淡出效果的实现原理,通过alpha混合处理和背景填充来实现渐变效果。在碰撞检测方面,文章介绍了判断两个图片是否相交的方法,并给出了详细的代码示例和解释。作者强调了不要在加载图片时处理alpha值,而是通过fill函数来填充背景色实现淡入淡出效果。此外,还提到了Pygame中精灵类的碰撞检测方法,但指出其局限性。总的来说,本文以简洁清晰的语言介绍了技术实现方法,适合初学者快速了解和上手实践。读者可以通过本文快速掌握在Pygame中实现淡入淡出效果和碰撞检测的方法,为游戏开发提供了有益的参考。
仅可试看部分内容,如需阅读全部内容,请付费购买文章所属专栏
《从 0 开始学游戏开发》,新⼈⾸单¥59
《从 0 开始学游戏开发》,新⼈⾸单¥59
立即购买
© 版权归极客邦科技所有,未经许可不得传播售卖。 页面已增加防盗追踪,如有侵权极客邦将依法追究其法律责任。
登录 后留言
全部留言(9)
- 最新
- 精选
- 三硝基甲苯想了一下。应该可以利用颜色的alpha的值,就在文中的代码里多判断一次alpha值,如果有相交的时候,就检测两个两个碰撞点的alpha值,因为透明图片alpha不是0就是255(应该吧,我觉得应该是这样)所以 当两个点都不是透明的时候就是碰撞到了。反之就是没有碰撞
作者回复: 对了一半,有一种直接的做法是通过蒙皮完成的,也就是美术多做一份外框的图,如果接触面不是外框,那就是内部某个区域了,这么判断,缺点是增加资源和内存消耗。
2018-07-084 - 赵鹏pygame没有提供基本的碰撞检测,这点其实很遗憾……
作者回复: 可以自己模拟
2019-01-29 - 阿森为什么把飞机的初始y坐标改大一点,碰撞检测就不起作用了呢,全输出False
作者回复: 怎么改大的?
2018-07-22 - louis碰撞本质上是两个图像的像素点形成的两个集合set1,set2。我们如果有能力得到每个物体包含的所有像素点,然后判断两个集合是否有交集即可。2020-10-221
- ifelse学习打卡2024-03-21归属地:浙江
- slark如果可以获得两个物体然后进行与操作看是否为空。不过这个又涉及到要自己处理物体的轮廓2018-07-30
- 阿森文中的输入坐标(100,300+y1),全改成(100,600+y1)就检测不到了2018-07-23
- 以往先获取两张图的轮廓,再逐点判断两组轮廓有没有重叠2018-07-03
- 大叔难当把图片拆分,比如机翼和机身作为两个不同对象载入屏幕,各自有自己的碰撞检测函数,至于能不能实现把机翼和机身放在同一个组中,还在思考2018-07-02
收起评论