Questions tagged «box2d»

Box2D是用C ++编写的开放源代码的2D游戏物理刚体物理仿真库,带有多种语言的端口

3
使快的东西变慢(Box2D)
我正在开发一款游戏,您可以控制投石机向对手投球。 这就像一个名为“中世纪围攻”的游戏。当投石机摆动手臂时,玩家需要抓住最佳时机按下按钮并释放球。然后,球将以切线角度飞行。 我现在的问题是,投石机的手臂摆动太快,以至于玩家无法抓住正确的时刻。同时必须如此之快,否则不能扔得足够远。并且有一根细绳将球和投石机臂连接起来,如果臂摆动太慢,则当臂移动时,球只是悬在绳上。 我通过切换步长来解决问题,每当手臂摆动时,我都将步长从1/60更改为1/200。一旦球员放开球,球便回到了1/60。 除了我的游戏适用于具有网络功能的多人游戏外,这还算不错。因此,更改步骤可能会导致问题。 我能想到的另一种解决方案是让它缓慢摆动,但是当玩家释放球时,我会在保持球方向的同时手动向球上增加速度。我不太喜欢这种解决方案,因为它看起来很假,但我仍然有一个问题,就是除非球非常短,否则球只是挂在弦上。 请对此有所说明,谢谢! 编辑 感谢大家的投入,我通过使手臂缓慢摆动来解决问题,并在玩家释放球时抓住球的速度和两倍。它看起来与更改步长大小完全相同。我只需要做一件事。因为手臂的摆动非常缓慢,所以球只是悬在手臂末端而不是摆动。我通过在挥杆期间和仅在挥杆期间在球上施加与重力相等的力来解决此问题。然后它不再挂在那里,而是与手臂一起摆动。 @MrCranky的答案很详细,看起来很可行,所以我接受。:)

1
基本的Box2D碰撞检测
我不明白如何在Cocos2D / Box2D中侦听碰撞。假设我有两个动态的圆形物体。一个很小,另一个很大。当小圆圈与大圆圈碰撞时,我想做点事(例如播放声音)。最好的方法是什么? 我目前正在尝试使用TestPoint方法。就像是: if(largeCircleBody->GetFixtureList()->TestPoint(smallCirclePoint)){ // collision happened... // play sound etc }

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.