Sim*_*iwi 1 gravity cocos2d-iphone ios
我已经尝试了许多不同的技术,在我的游戏中应用逼真的重力特征但到目前为止没有运气.我计划为那些可以向我展示或(分享)一些将重力应用于Cocos2D中的CCSprite的代码的人提供100点奖励.
到目前为止,我所做的只是丑陋或不切实际,我已经在很多不同的地方询问最好的方法是什么,但我还没有找到任何好看的重力技术.
无论如何,任何人都可以提供一些技巧/想法或他们的方法,只在不使用物理引擎的情况下将重力应用于Cocos2D中的CCSprite ?
谢谢!
无需明确使用任何物理引擎的有效方法是在更新循环中手动调整精灵的速度和位置.这基本上是欧拉集成.
// define your gravity value
#define GRAVITY -0.1
// define a velocity variable in the header of your Game class/CCSprite Subclass (neater)
float velocity_y;
-(void) update: (ccTime) dt
{
// Step the y-velocity by your acceleration value (gravity value in this case)
velocity_y += GRAVITY *dt; // drop the dt if you don't want to use it
// Step the position values and update the sprite position accordingly
sprite.position.y += velocity_y* dt; // same here
}
Run Code Online (Sandbox Code Playgroud)
在上面的代码片段中,我定义了一个velocity_y变量来跟踪我的精灵沿y方向的当前速度.请记住在init方法中将此值初始化为0.
接下来是欧拉的关键.每时每步:
您可以尝试是否使用delta-time(请参阅LearnCocos2D对使用它的优点的优秀评论)适用于您的游戏.虽然乘以delta时间可以让你的对象运动更准确地考虑到不同的帧速率,正如LearnCocos2d指出的那样,避免在系统中断的实时游戏中使用它(新邮件,低电量,广告流行)可能是明智的-out)可以发生并随后使游戏模拟向前跳跃以试图弥补.
因此,如果您放弃dt,请记住相应地调整(缩小)您的GRAVITY值以保持正确的感觉,因为此值不再乘以delta-time的值(约为1/60).
条件提示:要应用一个脉冲来移动精灵(比如通过滑动),你可以通过改变velocity_x(如果有的话)和velocity_y的值来直接影响速度.
我在游戏中使用过这种方法,效果很好.希望能帮助到你.
| 归档时间: |
|
| 查看次数: |
1344 次 |
| 最近记录: |