2014-02-28 71 views
0

這是運行我的精靈的代碼,它應該順利跳轉並從屏幕中心開始。它偶爾會這樣做,但大多數時候它會崩潰在地板上。它仍然跳躍,但不平穩。雪碧速度Cocos2d 3.0

浮點值

@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); 
} 

有人能幫助這一點?

回答

1

我無法理解一切你的代碼,則應該分享更多的信息(例如,當它被髮送跳躍消息?是當用戶觸摸屏幕有些按鈕?)

不過,我可以給你有一些提示來改善它:

  • 避免創建像_yVel這樣的屬性,請改用physicsBody.velocity。正如我看到你正在使用物理學(因爲CCPhysicsCollisionDelegate),所以你不需要重新發明輪子來模擬身體的速度。
  • 實現「跳躍」的最好方法是對物理體施加一些脈衝/力量,而不是直接改變速度。如果你也使用重力,它會給你通常在平臺類型遊戲中找到的「平滑」下降效果。
  • 您不應該將像_yVel這樣的浮動數字與另一個確切數字進行比較,就像您在if (_yVel != 5) _yVel = 0;中所做的那樣。這是非常直接的理解,因爲非常接近5的數字,如5.00001將返回YES的條件。如果你真的需要做這樣的事情,你應該使用的時間間隔,而不是像if (_yVel >= 4.5 && _yVel <= 5.5) ...

編輯:這個偉大的教程將幫助您https://www.makegameswith.us/gamernews/369/build-your-own-flappy-bird-with-spritebuilder-and