問題タブ [cmmotionmanager]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票する
1 に答える
32 参照

sprite-kit - スプライトが動いているかどうかを確認する

motionManager.gravity を使用してノードを移動するアプリがあります。

これは私のコードです

次に、displayLink を使用してスプライト ノードを更新および移動します。すべてがうまく機能しており、画面の端や特定の場所でノードを停止させることができます。私が知りたいのは、ノードが動いているか停止しているかを確認する方法があるかどうかです: 1. エッジで 2. コードで特定の場所で。3. デバイスは水平に保たれているため、加速度計は 0 より大きい n または y の数値を生成していません。

スプライト ノードが動いているときは音を鳴らしたいが、スプライト ノードが動いていないときは音を止めたい。
何か案は?

0 投票する
1 に答える
1113 参照

ios - タイプの引数リストで「startAccelerometerUpdatesToQueue」を呼び出すことはできません

次のコードの実行中に CMMotionManager をインスタンス化しようとしています:

次のエラーが表示されます:「タイプ '(NSOperationQueue?, withHandler: (CMAccelerometerData!, NSError!) -> _)' の引数リストで 'startAccelerometerUpdatesToQueue' を呼び出せません」

私は何を間違っていますか?ありがとうございました。

0 投票する
3 に答える
3104 参照

ios - iOS デバイスの移動に合わせて cameranode が回転する

360 度ビデオ プレーヤー プロジェクトです。

ルートノードに cameranode( SCNNode) を追加すると、 cameranode が の中心(0,0,0) に配置され、SCNSphere動画を再生できるようになりました。

次に、devicemotion を使用する必要があります。デバイスが動いたときにカメラを回転させる必要があります。特定の角度を回転させるだけではありません。(デバイスの移動だけでなく、デバイスを持っているとき、私の移動はデバイスが動いていると見なします。 を使用するdeviceMotion.attitude.rollと、カメラノードは、デバイスを持って周回するときではなく、デバイス自体が移動するときにのみ移動することがわかりました)

デバイスが (x1,y1,z1) の位置にある場合、cameranode はデバイスの移動に合わせて回転し、デバイスが再び (x1,y1,z1) の位置にある場合、ビューは最後に残したものと同じになります。 .

これが私がやったことです:

計算が間違っている可能性があります。なぜ 60 を割るのかわかりませんが、使用するときに必要な最も近い値のようです[self.cameraNode runAction:[SCNAction rotateByX:-tempY y:tempX z:tempZ duration:0]];

ここに問題がありますか?

  1. どのデータを使用すればよいですか?

CMGyroDataまたはCMDeviceMotion。を使用する場合CMDeviceMotion、どの特定の値を使用すればよいですか? deviceMotion.attitudedeviceMotion.attitude.quaterniondeviceMotion.gravity

  1. cameranode を回転させる正しい方法はどれですか? 方法はたくさんありますが、よくわかりません。

+ (SCNAction *)rotateByX:(CGFloat)xAngle y:(CGFloat)yAngle z:(CGFloat)zAngle duration:(NSTimeInterval)duration;

+ (SCNAction *)rotateToX:(CGFloat)xAngle y:(CGFloat)yAngle z:(CGFloat)zAngle duration:(NSTimeInterval)duration;

0 投票する
1 に答える
203 参照

ios - 複数のハンドラーで CMDeviceMotion の更新を取得する方法は?

Apple のコメント: 正確なデータを取得するには、CMMotionManager のインスタンスを 1 つだけ作成する必要があります。

アプリの起動時にデバイスの動きの更新を開始し、複数の場所で updatesToQueue を取得したい場合はどうなりますか。

シナリオは次のようなものです。

アプリの開始 - ハンドラーなしでデバイスのモーション更新を開始する

ClassA - 特定の時間にキューへのデバイス モーションの更新を開始します。

ClassB - 特定の時間にキューへのデバイス モーション更新を開始します。

必要に応じて、デバイス モーションの更新を停止します。

0 投票する
0 に答える
63 参照

iphone - spritekit xcodeで周囲を直立

スプライト キットを使用した簡単なゲームに取り組んでいます。
画面上を 3 つのスプライトが動き回っています。を使用してスプライトを動かします

このようにスプライト(1,2,3)で衝突検出を有効にしました

エッジループの新しいコードはこちら

CGRect ボーダー = CGRectInset (self.frame,325,133);

self.physicsBody = [SKPhysicsBody bodyWithEdgeLoopF​​romRect:border];

この周りに境界を配置して、スプライトが接触したときに、2 番目のスプライトがエッジで停止しているスプライトと衝突した場合でも、それ以上進まないようにするにはどうすればよいですか。画面の端を境界にしたくはありませんが、私が定義したものです。

現在、スプライトを使用して停止しています

すべてのスプライトとすべてのエッジ

これは、スプライトが端に到達すると停止するように機能しますが、別のスプライトが衝突すると、端にあるスプライトが端を超えます。

スプライトが外に出ることができない境界を定義する方法はありませんか?

助けてくれてありがとう。

0 投票する
1 に答える
354 参照

ios - CMDeviceMotion を使用して、デバイスの移動速度を検出する方法は?

iOS アプリを作成していますが、デバイスが特定の速度に達するまで振動イベントの検出を開始したくありません。CMMotionManager を使用して CMAccelerationData を取得して振動イベントを検出する方法は知っていますが、デバイスの移動速度を検出するために何を使用すればよいか知っている人はいますか? CMDeviceMoting/userAcceleration/GPS のいずれか...何をすべきかがわかりません。私はアプリを迅速に作成していますが、Objective-C での回答でも十分です。

ご協力ありがとうございました

0 投票する
0 に答える
35 参照

ios - デバイスが振動するたびにコードを実行する

iPhoneが左右に揺れる毎秒、いくつかのコードを実行しようとしています。必要な回転の種類を説明する .gif へのリンクを次に示します。で次のコードを試しましたviewDidLoad

アプリを実行し (シミュレーターで作業しています)、「ハードウェア > 左に回転 / 右に回転 / ジェスチャーを振る」に移動しても、何も起こりません。

0 投票する
1 に答える
1874 参照

ios - デバイスの回転データを正しく適用するのを手伝ってください

それで、私がやろうとしているプロジェクトが少しあります。重力に対するデバイスの回転と、開始位置からの移動を取得しようとしています。基本的に、デバイスの「追跡」データを取得します。後でデバイスから記録したデータを模倣する 3d pt を作成することで、基本的にこれを適用する予定です。

とにかくこれを達成するためには、シーン キットを使用して、記録しようとしているデータと同じように 3 次元で物事を見ることができるようにするのが最善だと考えました。現在、私は船を回転させようとしており、デバイスの回転に関係なく、常に次の重力 (地面にあるものなど) のように見えます。これを下に置いたら、これをポイントに適用するのは面倒だと思います. そこで、次のコードを作成しました。

回転ラインの 1 つだけを実行すると、すべてが完璧になります。その軸で適切に動作します。しかし、一度に 3 つの軸すべてを実行すると、混沌としてしまい、ジッターやすべてが予想とはかけ離れたパフォーマンスを発揮します。

私の質問は次のとおりだと思います:船がどの向きであっても適切に「直立」したままになるように、上記のコードを修正する方法を知っている人はいますか?