ios - Cocos2D重力?

标签 ios cocos2d-iphone gravity

我真的很想尝试在我的游戏中发挥引力。我知道每个人都说使用 Box2D,但就我而言我不能。我需要使用 Cocos2D 来处理重力。

我知道 Cocos2D 没有内置任何重力 API,所以我需要手动做一些事情。问题是网络上没有任何教程或示例可以说明这一点。

任何人都可以告诉我他们做了什么,或者可以解释一下如何逐步如何应用非常数重力(下落时会稍微变强) .

我认为这会帮助很多面临与我相同问题的人!

谢谢!

最佳答案

重力只不过是在每个物理步骤中施加到 body 上的恒定速度。看看这个示例性的更新方法:

-(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;
}

每帧 Sprite 的 y 位置都会减少。这是简单的方法。为了获得更逼真的效果,您需要为每个移动物体设置一个速度矢量,并将重力应用于该速度(这也是一个 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 方向增加。这将使物体向下加速越来越快,“下落”的时间越长。

然而,通过修改速度,您仍然可以更改对象的总体方向。例如,要使角色跳跃,您可以设置 velocity.y = 2.0,它会向上移动并由于随时间施加的重力影响再次返回。

这仍然是一种简化的方法,但在不使用“真实”物理引擎的游戏中很常见。

关于ios - Cocos2D重力?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8130808/

相关文章:

ios - 动态生成 UITextFields

ios - PhotoKit 框架 : What is assetSource of PHAsset?

ios - 来自数组的 UIImage

iphone - cocos2D 中持续的基于时间的计算应该放在哪里?

android - AndEngine重力不起作用

ios - 停止在 SceneKit 中的 Node 上播放声音

ios - 正确链接 HUDLayer 到 GameplayLayer

ios - 将 UI 元素设置为单例是不好的做法吗?

Android TextView重力

java - 以编程方式设置 View 的重力