我一直很難創建一個跳躍系統,用戶可以點擊跳躍按鈕進行小跳躍並保持跳躍。可變跳躍高度
我偶然發現了這個話題:
https://gamedev.stackexchange.com/questions/13277/variable-height-jumping-in-side-scrollers
哪位大大幫我制定如下代碼:
PlayerMovementTimer = [NSTimer scheduledTimerWithTimeInterval:0.005 target:self selector:@selector(movePlayer) userInfo:nil repeats:YES];
[JumpButton addTarget:self action:@selector(jumpPlayer:) forControlEvents:UIControlEventTouchDown];
[JumpButton addTarget:self action:@selector(stopJump:) forControlEvents:UIControlEventTouchCancel | UIControlEventTouchUpInside | UIControlEventTouchDragExit];
- (void)movePlayer
{
CGFloat playerY = Player.center.y + PlayerYV;
if(playerY > 264) {
PlayerYV = 0;
playerY = 264;
}
if(playerY < 264) {
PlayerYV += 0.048f - PlayerYD;
}
if(HoldingJump && PlayerYV < 0 && PlayerYD + 0.0018f < 0.048f) {
PlayerYD += 0.0018f;
}
Player.center = CGPointMake(Player.center.x + PlayerXV, playerY);
}
- (IBAction)jumpPlayer:(id)sender
{
if(Player.center.y == 264) {
PlayerYD = 0;
PlayerYV = -2.25;
HoldingJump = true;
}
}
- (IBAction)stopJump:(id)sender
{
HoldingJump = false;
}
的代碼似乎工作(某些值需要一點罰款調整,但我還沒有得到這一點呢)。唯一的問題是,運動看起來有點不穩定(即使在真實的設備上),並且當玩家處於跳躍的頂部時,他們加速非常緩慢,並且我沒有看到任何值可以跳躍看起來像馬里奧遊戲一樣流暢。
請看看代碼,看看我是否失去了一些明顯的東西,或者是否有比NSTimer調用void函數更有效的控制運動的方法。另外,是否將UIImageView的位置設置爲float值不好?
謝謝。
謝謝!使用這些信息,我能夠成功地停止對UIImageView的模糊效果,並通過爲定時器使用正確的值來使動作平滑!另外,感謝您使用物理引擎指針,但這不是必需的;我已經解決了我的問題,現在我的遊戲擁有完美的跳躍系統:) – CHRIS 2013-04-29 15:13:25