level 13
这次重写使用的是box2d物理引擎,因为好些鱼的碰撞体积不是矩形(比如,灯笼鱼),而且鱼是有旋转的,这样的话,传统的矩形碰撞是满足不了的,而box2d就可以,因为只是模拟碰撞,而不是模拟物理环境。所以是实体的运动带动刚体,至于这些不规则图形的形状,则是 由Physics editor导出的,这个软件是导出Shape的,这个软件我是在网上找的试用版的,如果需要我可以发出来。但是,在sdl中使用physics editor需注意,我是用这个软件导出的cocos2dx格式,而cocos2dx坐标系和sdl不同,所以还要做个转换,
2017年04月09日 00点04分
7
level 13
先说说思路,使用box2d的思路,box2d是物理引擎,这里不需要模拟物理世界,而仅仅是不规则碰撞,并且box2d的碰撞是以fixture为准进行碰撞检测的,而一个刚体可能会有多个fixture,所以首要目的就是保证这些刚体只碰撞一次。
这个解决了就是world->Step(1/60,0,0);
有过经验的可能会了解,左边是时间步,往右依次是速度修正迭代次数和位置修正迭代次数。由于这里不需要,所以设置为0先说说思路,使用box2d的思路,box2d是物理引擎,这里不需要模拟物理世界,而仅仅是不规则碰撞,并且box2d的碰撞是以fixture为准进行碰撞检测的,而一个刚体可能会有多个fixture,所以首要目的就是保证这些刚体只碰撞一次。
这个解决了就是world->Step(1/60,0,0);
有过经验的可能会了解,左边是时间步,往右依次是速度修正迭代次数和位置修正迭代次数。由于这里不需要,所以设置为0
2017年04月11日 00点04分
11
level 13
看上图会发现,子弹的刚体要比子弹慢上一点,那是为什么呢?这个是我自己的缘故,看上面的帧数,63,1/63=0.0158而1/60=0.01667
物理世界和游戏世界不同步,才会产生这种问题,回去得修改一下
2017年04月11日 00点04分
12
应该和这个没关系,因为这里没有使用box2d的碰撞模拟。
2017年04月12日 05点04分
level 13
这几天实现了能量槽,和能量槽满了之后的激光炮的切换。可以见上图,接下来实现经验,金币。这样,基本功能就实现了,接下来就是鱼了,鱼的实现也是一个大工程。而且鱼潮实现也类似于僵尸的一波的实现,也便于我重写植物大战僵尸(这个我写过一次,不过没有在贴吧说明。而且实现功能不多),
2017年04月12日 05点04分
15
level 13
另外需要注意,box2d在碰撞过程中的回调函数内是不能对刚体进行一些删除,或者设置刚体active的,这些操作都只能在这之外调用,因为在这之内会造成world->isLocked()而引发断言
2017年04月12日 06点04分
16