Stop applying force to a sprite
在我的 spritekit 游戏中,我正在努力为我的游戏施加风一样的力。我以某种方式实现了这一点。
我尝试的第一种方法是:
尝试一
在此代码中,sprite首先按应有的方式推送,但是我不能让它停下来。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 | -(void)update:(NSTimeInterval)currentTime { NSLog(@" %d",_time); if (_time == 200 /* | _time==400 */ ) { [self startPush]; } -(void)startPush { SKAction *startPush = [SKAction runBlock:^{ [_player.physicsBody applyForce:CGVectorMake(50, 0)]; }]; SKAction *wait = [SKAction waitForDuration:1]; SKAction *stopPush = [SKAction runBlock:^{ // [_player.physicsBody applyForce:CGVectorMake(-50, 0)]; [_player.physicsBody applyForce:CGVectorMake(0, 0)]; }]; SKAction *sequence = [SKAction sequence:@[startPush, wait,stopPush]]; [self runAction:sequence]; } |
尝试二
自从我看到 LearnCocos2d 的这篇文章后,我试图更改我的代码,他说 AKActions 不利于运动。
SpriteKit 中的恒定移动
所以我尝试了这个
这里即使 pushOn 设置为 No,推送也不会停止。
希望在这方面做最后的调整时得到一些帮助。
谢谢
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 | -(void)update:(NSTimeInterval)currentTime { NSLog(@" %d",_time); if (_time == 200 /* | _time==400 */ ) { windOn=NO; }else if (_time==300) { pushOn=NO; } if (pushOn) { { [_player.physicsBody applyForce:CGVectorMake(0.1, 0)]; } |
施加零力等同于施加……什么也不施加。你基本上是用这段代码离开身体:
1 | [_player.physicsBody applyForce:CGVectorMake(0, 0)]; |
相反,您可能想将速度矢量归零:
1 | _player.physicsBody.velocity = CGVectorMake(0, 0); |
不同之处在于applyForce充当"添加向量"操作,而上面的行是"设置向量"操作。