我一直很难创建一个跳跃系统,用户可以点击跳跃按钮进行小跳跃并保持跳跃。可变跳跃高度
我偶然发现了这个话题:
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