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