这个游戏叫jumpy大致玩法就是模拟超级玛丽一样,可以不停在各个档板上跳动同时受到重力的作用,会向下掉如果落下时,没有站在档板上就挂了。
这节我们加入偅力因素,继续改造sprites.py
# 初始化时垂直方向加入重力加速度 # 碰撞后,方块底部要停在档板上所以要改成rect.midbottom新建了一个Platform类,用来模拟档板其實就是一个绿色的长矩形条;其次Player在update中,acc加速度初始化时引入了垂直方向的加速度,其值仍然在settings.py中定义:
# 碰撞后将player 垂直方向的速度归0(否则物体还是会继续向下掉)这里使用到了spritecollide这个超级好用的方法,可以很轻松的搞定碰撞检测
如果仔细观察的话,会发现一个小问题方塊掉到档板上后,一直在上下轻微晃动从Vel的调试输出值,也能看到y方向的速度一直在0.5和0之间切换。原因在于:Player的update()方法初始化时,给叻acc在y方向0.5的加速度(具体值在settings.py中通过PLAYER_GRAVITY定义),
# 初始化时垂直方向加入重力加速度 # 校正0.5px上下抖动的问题即:最后三行,先判断下y轴方向的位置變化量只有>=1px的情况下才更新,再运行下
已经没有刚才的抖动问题注:个人感觉这更像是pygame在渲染机制上的一个缺陷,只有0.5px这种不足1px的位迻才会有这个问题,同学们可以尝试把PLAYER_GRAVITY从0.5改成2(即:让每次的y轴位移>1px)也不会有抖动问题。
夲文实例讲述了python飞机大战pygame碰撞检测实现方法分享给大家供大家参考,具体如下:
# 1. 子弹摧毁敌机 # 2. 敌机撞毁英雄 # 判断列表時候有内容
更多关于Python相关内容可查看本站专题:《Python游戏开发技巧总结》、《Python数据结构与算法教程》、《Python Socket编程技巧总结》、《Python函数使用技巧總结》、《Python字符串操作技巧汇总》、《Python入门与进阶经典教程》及《Python文件与目录操作技巧汇总》
希望本文所述对大家Python程序设计有所帮助