Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ios/100.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ios 无论手指在屏幕上保持多长,触摸开始时只需注册一次点击?_Ios_Swift3_Sprite Kit - Fatal编程技术网

Ios 无论手指在屏幕上保持多长,触摸开始时只需注册一次点击?

Ios 无论手指在屏幕上保持多长,触摸开始时只需注册一次点击?,ios,swift3,sprite-kit,Ios,Swift3,Sprite Kit,我正在做一个平台游戏,以前有一个单一的新闻给一个静态的高度跳跃。我的跳跃代码都在触摸开始时: 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?.veloci

我正在做一个平台游戏,以前有一个单一的新闻给一个静态的高度跳跃。我的跳跃代码都在触摸开始时:

    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提供的platformer教程,其中包含一段代码,允许玩家进行短距离跳跃,或者完全希望,具体取决于您是轻敲屏幕还是握住屏幕。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);
  }
在我的更新方法中,我将他的方法应用到我自己的项目中,并且成功了。唯一的问题是,如果按下屏幕,玩家继续跳跃

我有一个布尔检查,如果球员不在地面上,不允许他跳跃,但是如果按住屏幕点击,那么球员跳跃并反复触碰地面,并且永远继续跳跃

考虑到这一点,我无法理解当我的角色在空中时,在触摸开始时关闭触摸识别的逻辑,并且直到我抬起手指并再次轻触时才重新打开触摸识别


任何建议都将不胜感激

有一个名为isJumping的布尔值,它在toucheStart时设置为true,在toucheSend时设置为False。在跳转方法内部检查此布尔值是否为真(表示手指仍处于打开状态),如果为真,请不要跳转!确保将此布尔值设置为触摸中的最后一行刚开始不退出第一次跳转

谢谢你,我试过了,但似乎没法用。我想,因为只要我把手指放在屏幕上,跳跃就等于真的,对吧?对不起,我的回答很快,因为我在工作,所以时间有限。很高兴它成功了:D!