Cocos2D重力?
我真的很想尝试在我的比赛中有引力。 我知道每个人都说使用Box2D,但在我的情况下, 我不能。 我需要为重力使用Cocos2D。
我知道Cocos2D没有任何内置的重力API,所以我需要手动做一些事情。 事情就是在networking上的任何地方都没有教程或例子来展示这一点。
任何人都可以告诉我他们已经做了什么,或者可以一步一步地解释如何应用非恒定的重力(一个稍微强一点的时候)。
我认为这会帮助很多面临同样问题的人!
谢谢!
重力只不过是一个恒定的速度应用于身体的每一个物理步骤。 看看这个示例更新方法:
-(void) update:(ccTime)delta { // use a gravity velocity that "feels good" for your app const CGPoint gravity = CGPointMake(0, -0.2); // update sprite position after applying downward gravity velocity CGPoint pos = sprite.position; pos.y += gravity.y; sprite.position = pos; }
精灵y位置的每一帧都会减less。 这是简单的方法。 为了获得更逼真的效果,您需要为每个移动物体提供速度vector,并将重力应用于速度(也是CGPoint)。
-(void) update:(ccTime)delta { // use a gravity velocity that "feels good" for your app const CGPoint gravity = CGPointMake(0, -0.2); // update velocity with gravitational influence velocity.y += gravity.y; // update sprite position with velocity CGPoint pos = sprite.position; pos.y += velocity.y; sprite.position = pos; }
这具有随着时间的推移在向下的y方向上增加速度的效果。 这会使对象加速越来越快,越来越“下降”。
然而,通过修改速度,您仍然可以改变对象的总体方向。 例如,为了使angular色跳跃,您可以设置velocity.y = 2.0
并且随着时间的推移,它会向上移动并再次回落。
这仍然是一个简化的方法,但在不使用“真正的”物理引擎的游戏中很常见。