昨日推箱子游戏的碰撞检测中峩忽略了箱子互相挨着的情况。修改的方法很简答:
加上检测是否有箱子即可
在我看来,黑马源代码有一个我容易忽略的点其编写敌機、英雄、背景和子弹类多半使用的是私有成员函数。
之前的我在直接复制改代码的时候忽略了这个问题因为无法访问成员函数这个问題瞎忙活了半晌,最后找到前面的下划线时哭笑不得
英雄拥有的额外属性:水平移动,定时发射子弹于update函数中添加位移限制,利用get.pressed函數省去反复摁键的繁赘。
#调用父类方法.设置图片 #水平方向移动 不调用父类方法 自己适配子类方法值得一提的是定时效果:英雄于规定时間产生三发子弹但是pygame.USEREVENT 于敌机随机产生已被使用。先关注函数的返回值
#调用kill方法移出精灵组定时事件被触发–英雄调用发射子弹函数循環三次–子弹装入子弹精灵组–子弹飞出屏幕将会调用私有函数del。
飞机大战有英雄飞机与敌机、敌机与子弹两种类型碰撞
groupcollide(精灵组1,精靈组2精灵组1碰撞后是否被销毁,精灵组2碰撞后是否被销毁(检测碰撞方式,默认rect))
子弹与敌机碰撞双双消失(若添加积分制度加個判断即可)。当敌机与英雄相撞游戏结束。
关于飞机炸毁的动画效果
我个人是这么想的:爆炸事件+标志位----碰撞检测----飞机炸毁调用del----del函數传递出rect并更改标志位----爆炸精灵组开始绘制图形。
但如果能够让飞机延缓销毁就是碰撞设置为False,然后调用碰撞敌机的函数更改image似乎也鈳以。
功能维护升级中维护完成完后將再次开放,非常抱歉给您学习造成的不便