我有 iPhone 自上而下的游戏(无重力),我正在使用 Cocos2d 和 Box2d。
我尝试通过以下代码移动子弹:
// 'targetPosition' is a point of touch
b2Vec2 touchInWorld = b2Vec2(targetPosition.x/PTM_RATIO, targetPosition.y/PTM_RATIO);
b2Vec2 direction = b2Vec2(touchInWorld.x - ballBodyDef.position.x, touchInWorld.y - ballBodyDef.position.y);
b2Vec2 force = b2Vec2(direction.x, direction.y);
force.Normalize();
ballBody->ApplyLinearImpulse(force, ballBodyDef.position);
问题是如果精灵很小(10x10 像素),球的移动速度会很快。
如果精灵是 50x50,那么速度会更小,看起来还可以。
这让我发疯,因为我根本无法控制速度。
不仅如此,如果我不使用 force.Normalize() 速度会因触摸方向而异......
当我只使用 Cocos2d 和动画时,一切都很好。我尝试使用 Box2d 来实现碰撞,但似乎我正在考虑自己做物理的工作量很大:(