关于ios:停止对sprite施加力

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充当"添加向量"操作,而上面的行是"设置向量"操作。