Ios 更改场景时,CGVector量会发生变化

Ios 更改场景时,CGVector量会发生变化,ios,sprite-kit,skphysicsbody,Ios,Sprite Kit,Skphysicsbody,在我的第一个场景中,我有一个CGVector值,使球在屏幕上反弹。当加载回这个屏幕时(从一个游戏到另一个屏幕),这个值已经改变,使得球的移动速度比我想要的慢得多 第一个场景addBall方法: CGVector ballDirection = CGVectorMake (40,120); [ball.physicsBody applyForce:ballDirection]; 从一场接一场回到第一场: -(void)touchesBegan:(NSSet *)touches withEvent

在我的第一个场景中,我有一个
CGVector
值,使球在屏幕上反弹。当加载回这个屏幕时(从一个游戏到另一个屏幕),这个值已经改变,使得球的移动速度比我想要的慢得多

第一个场景
addBall
方法:

CGVector ballDirection = CGVectorMake (40,120);
[ball.physicsBody applyForce:ballDirection];
从一场接一场回到第一场:

-(void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event{

    MyScene *firstScene = [MyScene sceneWithSize:self.size];
    [self.view presentScene:firstScene transition:[SKTransition doorsOpenHorizontalWithDuration:0.5]];
    SKAction *playAgainSound = [SKAction playSoundFileNamed:@"opening.wav" waitForCompletion:NO];
    [self.scene runAction:playAgainSound];
}
不确定为什么
CGVectorMake
值会发生更改,因为在转换回第一个场景时,
addBall
方法将在
initWithSize
中被调用

我尝试了以下方法,但没有成功:

static CGFloat dx = 40;
static CGFloat dy = 120;
CGVector ballDirection = CGVectorMake(dx, dy);
[ball.physicsBody applyForce:ballDirection];

您需要有对ballDirection的引用,因为它是使用随机值重新初始化的。或者将其更改为static,而不是没有任何意义的。如果第一次将设定向量应用于球,请移动到另一个场景,返回到第一个场景并再次应用相同的向量-球将以相同的向量移动。显然,你的问题不在于你发布的代码,而在于其他一些东西。一步一步地重新检查您的代码,或者发布更多相关的代码。如果是您要返回的同一场景,则不会调用init。另外,您在代码中的什么地方调用applyForce?我找到了一个解决方案。而不是使用[ball.physicsBody applyForce:BallDirection];我在测试后使用了“applyImpulse”,球以正确的值重新加载。