我正在使用SpriteKit的粒子發射器系統在背景中構建一個移動的星場,玩家的飛船位於屏幕的中心。改變現有粒子的方向
當玩家觸摸屏幕的某個區域時,我計算角度併爲玩家精靈製作動畫,使其旋轉。
然而,當我將它應用到星域時,整個矩形的星域被旋轉繪製。然而,我想要的是單個粒子只是開始向新的方向前進。
這就是旋轉一整張紙上的點與整個紙上的點之間的區別,只是讓點移動到一個新的角度。那有意義嗎?
這裏是我迄今爲止的播放器正確地旋轉,但星域「旋轉就像一張整張紙」:
-(void)touchesEnded:(NSSet *)touches withEvent:(UIEvent *)event {
// Choose one of the touches to work with
UITouch *touch = [touches anyObject];
CGPoint location = [touch locationInNode:self];
CGPoint center = CGPointMake(CGRectGetMidX(self.frame), CGRectGetMidY(self.frame));
CGPoint offset = rwSub(location, center);
SKEmitterNode *starfield = (SKEmitterNode *)[self childNodeWithName:@"starfield"];
SKSpriteNode *player = (SKSpriteNode *)[self childNodeWithName:@"player"];
SKAction *rotateNode = [SKAction rotateToAngle: (CGFloat)atan2(offset.y, offset.x) duration:0.5 shortestUnitArc:TRUE];
[player runAction: rotateNode];
SKAction *rotateStarfieldNode = [SKAction rotateToAngle: (CGFloat)(atan2(offset.y, offset.x) - M_PI_2) duration:0.5 shortestUnitArc:TRUE];
[starfield runAction: rotateStarfieldNode];
}
編輯particleRotation屬性似乎對粒子(現有的或新的)沒有明顯的影響。 – Christopher