我正在开发一款平台游戏,以前我只需按一下即可进行静态跳高。我的跳转代码全部触及开始:
let zero:CGFloat = 0
//added the if velocity greater == zero for the most part wont allow players to jump onless on ground
if((Player.isPlayerOnGround) && (player.physicsBody?.velocity.dy)! == zero) || Player.isPlayerOnPlatform {
player.physicsBody?.applyImpulse(CGVector(dx: 0, dy: jumpHeight))
Player.isPlayerOnGround = false
}
我从 Ray Wenderlich 那里找到了一个平台游戏教程,其中包含一段代码,允许玩家进行短跳,或者完全希望,具体取决于您是轻按屏幕还是按住屏幕。不过,Ray 将此代码放在 UPDATE 方法中:
CGPoint jumpForce = ccp(0.0, 310.0);
float jumpCutoff = 150.0;
if (self.mightAsWellJump && self.onGround) {
self.velocity = ccpAdd(self.velocity, jumpForce);
} else if (!self.mightAsWellJump && self.velocity.y > jumpCutoff) {
self.velocity = ccp(self.velocity.x, jumpCutoff);
}
我在我的更新方法中将他的方法应用到我自己的项目中并且有效。唯一的问题是,如果按住屏幕,播放器会继续跳跃。
我有一个 Bool 检查,不允许玩家在不在地面上时跳跃,但是如果按住屏幕点击,则玩家会跳跃并反复接触地面并继续跳跃。
鉴于此,我无法弄清楚一旦我的角色在空中就开始关闭触摸识别的逻辑,并且在我抬起手指并再次点击之前它不会重新打开。
欢迎任何建议!
最佳答案
有一个名为 isJumping 的 bool 值,它在 TouchesBegan 时设置为 true,在 TouchesEnded 时返回 False。如果此 bool 值为真(意味着手指仍在打开),请在跳转方法内部检查,如果是,则不要跳转!确保将此 bool 值设置为 touches 的最后一行开始只是为了不退出第一次跳转!
关于ios - 无论手指在屏幕上停留多长时间,只在 touchesBegan 中注册一次点击?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45353614/