我的游戏中出现奇怪的行为。我有一个SKSpriteNode。将force赋予我的SKSpriteNode后,由于force的影响,我的SKSpriteNode开始行驶(即mySpriteNode.physicsBody.isResting == NO)。

场景:

当停球时它是模拟(即mySpriteNode.physicsBody.isResting == YES),我将任何position赋予mySpriteNode。这很完美。

但,

当mySpriteNode行驶时(即mySpriteNode..physicsBody.isResting == NO),我给mySpriteNode赋予velocity 0并停止(即mySpriteNode..physicsBody.isResting == YES)。但是当我给它position时,它没有任何效果。

mySpriteNode的position保留了我给出0速度的位置。

有任何想法吗?

最佳答案

当我在动作块完成中重新放置精灵时,这对我来说是完美的工作。

SKSpriteNode *sprite = [SKSpriteNode spriteNodeWithImageNamed:@"Spaceship"];

sprite.xScale = 0.5;
sprite.yScale = 0.5;
sprite.position = CGPointMake(self.size.width/2.0, self.size.height/2.0);
sprite.physicsBody = [ SKPhysicsBody bodyWithRectangleOfSize:sprite.size];

SKAction *act1 = [SKAction runBlock:^{
    [sprite.physicsBody applyImpulse:CGVectorMake(0, 100)];
}];

SKAction *act2 = [SKAction waitForDuration:2];
SKAction *act3 = [SKAction runBlock:^{
    [sprite.physicsBody setVelocity:CGVectorMake(0, 0)];
}];
SKAction *seq = [SKAction sequence:@[act1,act2,act3]];
[sprite runAction:seq completion:^{
    sprite.position = CGPointMake(self.size.width/2.0, self.size.height/2.0);
}];


  self.physicsWorld.gravity = CGVectorMake(0, 0);


尝试在动作完成块中重新定位。

10-06 02:43