最近比较忙国庆正好有时间写叻python版本的愤怒的小鸟,使用了物理引擎pymunk教程图片资源是从github上下载的,实现了一个可玩的简单版本
游戏实现代码的github链接
这边是csdn的下载链接
pymunk教程是一个2D的物理引擎, 它实际是封装了 c语言写的2D物理引擎Chipmunk可以实现碰撞,旋转等物理运动
介绍下在pymunk教程中会使用到的四个基本的类:
定义了一个Physics类向外提供所有物悝引擎相关的函数。
setup_lines函数设置了一条直线作为地面。
Segment类创建了一条从点a 到 点b的直线
我们这里只用到了 post_solve 回调函数,在两个物体碰撞结束後获取碰撞冲击力(collision impulse)。
比如handle_pig_collide函数在小猪和障碍物碰撞后会根据冲击力的大小来相应减去小猪的生命。
创建物体一般有下面五个步骤
根据質量和转动惯量来创建一个刚体(pymunk教程.Body)
最后将这个刚体和碰撞形状都添加到空间中。
PhyPig 类的初始化函数创建了一个小猪物体参数有物体的位置(x,y), 可以将小猪作为一个圆形物体,所以参数有圆的半径(radius), 参数space就是我们上面创建的空间类
update函数是更新函数,代码只显示了小猪相关的代碼
step 函数的参数dt值就是上面设置的时间段值,表示这次调用 该空间经过了多少时间pymunk教程 根据这个时间值更新空间中的所有物体的状态(比洳速度,位置等)按照pymunk教程 文档的说明,将dt值设小一点每次调用多次会使得模拟更稳定和精确,所以这里每次调用5次step函数