我的问题是,当我在游戏开始时跳起来时,当我只想跳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
答案 0 :(得分:0)
首先,touches
有一个名为tapCount
的属性,因此您无需计算接触的频率。
然后,在你的if构造中,你将在第一次点击时执行第一个条件,在第二个点击时执行第二个条件,在第三个点击时不执行。没有任何条件成立,因为timesTapped
将为2.只有在第四次点按时才会将didJumpOnce
设置为false。