【问题标题】:Sprite Speed Cocos2d 3.0精灵速度 Cocos2d 3.0
【发布时间】:2014-02-28 01:02:21
【问题描述】:

这是运行我的精灵的代码,它应该平稳跳跃并从屏幕中心开始。它偶尔会这样做,但大多数时候它会坠落到地板上。它仍然会跳,但并不顺畅。

浮点值

@interface HelloWorldScene () <CCPhysicsCollisionDelegate>
{
float           _yVel;
}

@end

数学

- (void) jump
{
// adjust jump speed here
if ( _player.position.y > kFLOOR_HEIGHT ) _yVel -= 0.14;
else {
    if ( _yVel != 5 ) _yVel = 0;
}

_player.position = ccp( _player.position.x, _player.position.y + _yVel);
}

有人可以帮忙吗?

【问题讨论】:

    标签: cocos2d-iphone sprite


    【解决方案1】:

    我无法理解您的代码所做的一切,您应该分享更多信息(例如,何时发送跳转消息?是当用户触摸某个屏幕按钮时?)

    不过,我可以给你一些改进的建议:

    • 避免创建像 _yVel 这样的属性,而是使用physicsBody.velocity。正如我所见,您正在使用物理学(因为 CCPhysicsCollisionDelegate),因此您无需重新发明轮子来模拟身体速度。
    • 实现“跳跃”的最佳方式是对物理体施加一些冲量/力,而不是直接改变速度。如果您还使用重力,它会给您带来“平稳”的下落效果,通常在平台类型游戏中可以找到。
    • 您永远不应该将像 _yVel 这样的浮点数与另一个精确数进行比较,就像在 if ( _yVel != 5 ) _yVel = 0; 中所做的那样。这很容易理解,因为像 5.00001 这样非常接近 5 的数字将返回 YES 到条件。如果你真的需要做这样的事情,你应该使用间隔,比如if ( _yVel &gt;= 4.5 &amp;&amp; _yVel &lt;= 5.5 ) ...

    编辑:这个很棒的教程会帮助你https://www.makegameswith.us/gamernews/369/build-your-own-flappy-bird-with-spritebuilder-and

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-07-06
      • 2010-12-18
      • 1970-01-01
      相关资源
      最近更新 更多