人物跳跃超过预期?

时间:2015-04-25 16:20:41

标签: ios objective-c

我的问题是,当我在游戏开始时跳起来时,当我只想跳2次时,它跳了三次。代码的作用是在一开始bool startgame设置为false,点击后开始移动形状并启动dan的动画,即我的游戏角色。在update方法中,只要shape和dan触摸isjumping布尔变量设置为false,这样当你单击时,dan跳转然后将didjumponce布尔值设置为true,这样它就可以跳转第二次。但由于某种原因,在游戏开始时它允许dan跳三次。我尝试将触摸计数器(时间戳)设置为0,每次有一个点击它加1,这样当它检查你是否可以跳第二次是不允许的。但它仍然如此。谢谢:))

@implementation GameScene
bool isJumping;
bool isPlaying;
bool didJumpOnce;
bool startGame = false;
int timesTapped = 0;

-(void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event
{
    /* Called when a touch begins */

    timesTapped++;

    // checks to see if the game has started, if it hasn't, starts dan's animation
    if (startGame == false)
    {
        startGame = true;
        [self dansAnimation];
    }
    else if (isJumping == false)
    {
        isJumping = true;
        didJumpOnce = true;

        dan.physicsBody.velocity = CGVectorMake(0, 0);
        [dan.physicsBody applyImpulse: CGVectorMake(0, 55)];
    }
    else if (didJumpOnce == true && timesTapped != 2)
    {
       didJumpOnce = false;

        dan.physicsBody.velocity = CGVectorMake(0, 0);
        [dan.physicsBody applyImpulse: CGVectorMake(0, 55)];
    }
}

-(void)update:(CFTimeInterval)currentTime
{
    /* Called before each frame is rendered */

   if (startGame == true)
   {
        shape.position = CGPointMake(shape.position.x - 7, shape.position.y);
   }

   if (CGRectIntersectsRect(dan.frame, shape.frame))
   {
        isJumping = false;
   }
}
@end

1 个答案:

答案 0 :(得分:0)

首先,touches有一个名为tapCount的属性,因此您无需计算接触的频率。

然后,在你的if构造中,你将在第一次点击时执行第一个条件,在第二个点击时执行第二个条件,在第三个点击时不执行。没有任何条件成立,因为timesTapped将为2.只有在第四次点按时才会将didJumpOnce设置为false。