1

プロジェクトで単純なsksパーティクル ファイルを作成しました。知りたいのですが、A: ビューにこのパーティクルを実装する方法と、デバイスが保持されている方向にパーティクルが移動するように適切なパラメータを追加する方法を教えてください。 、(たとえば、iOS7の動的壁紙に非常に似ています)、私の場合、石がまっすぐ下に落ちていて、デバイスが右に傾いている場合、石は別の角度で落ち始めるはずです. アドバイスをいただければ幸いです。

4

1 に答える 1

0

実は、このエフェクトを自分のゲームにも適用しようと考えていました。これは大まかな答えであり、実際にこれら 2 つの要素を組み合わせようとしたことはありませんが、間違いなくいくつかの指針が得られるはずです。

@property (strong,nonatomic) SKEmitterNode * starEmitter;
@property (strong,nonatomic) CMMotionManager * self.motionManager;

// Create your emitter
 NSString *starPath = [[NSBundle mainBundle] pathForResource:@"startButtonDisappear" ofType:@"sks"];
 self.starEmitter = [NSKeyedUnarchiver unarchiveObjectWithFile:starPath];

// Create a motion manager
self.motionManager = [CMMotionManager new];
[self.motionManager startAccelerometerUpdates];

update メソッドで、重力ベクトルを計算し、エミッタの加速度プロパティを割り当てます。

- (void)update:(NSTimeInterval)currentTime {
  CMAccelerometerData* data = self.motionManager.accelerometerData;

  // You really don't want NSLogs in this method in a release build, by the way
  NSLog(@"x [%2.1f] y [%2.1f] z [%2.1f]",data.acceleration.x,data.acceleration.y,data.acceleration.z)

  CGVector gravity;

  if ([[UIApplication sharedApplication] statusBarOrientation] == UIInterfaceOrientationLandscapeLeft) {
    gravity = CGVectorMake(data.acceleration.x, data.acceleration.y);
  } else {
    gravity = CGVectorMake(-data.acceleration.x, -data.acceleration.y);
  }

  CGFloat tmp = gravity.dy;
  gravity.dy = gravity.dx;
  gravity.dx = tmp;

  // self.physicsWorld.gravity = gravity;

  self.starEmitter.xAcceleration = gravity.x;
  self.starEmitter.yAcceleration = gravity.y;

  NSLog(@"Emitter acceleration set to [%+4.2f,%+4.2f]",gravity.dx,gravity.dy);
}
于 2014-03-13T13:24:09.750 に答える