我的游戏中出现奇怪的行为。我有一个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);
尝试在动作完成块中重新定位。