2017-07-26 6 views
1

私は、スピットノードのような特定の力でスプライトノードを回転させたいと思います。ユーザーが画面上で指を速く動かすと、スピナーがより速く回転し、ユーザーが画面上で遅く指を動かすとスピナー(SKSpriteNode)のスピンが遅くなります。
私はノードに割り当てたスピナーのイメージを持っています。また、ノードの周りにアイテムのリストがあり、停止した場所によってそのアイテムを選択したいので、どの位置が停止しているかをチェックしたいと思います。私は角度のインパルスを加えなければならないことを知っていますが、その値をどのように計算するかはわかりません。より高速なタッチが(実際のスピナーのような)で適用されるために、より力のようfidgetスピナーのような特別な力でスプライトノードをスピンする方法

これは私がやっているものです:

fidgetSpinner.physicsBody?.applyAngularImpulse(5)

+0

あなたの質問は何を行う必要があり、それを使用するには?スピナーが回転していないか、スピンしていますか? –

+0

私の質問は、タッチの動きやタッチの正確な力で回転する方法です。UITouchの委任された代理人 – mukul

+0

もっと力を加えるには、より速くタッチしたいですか? (本当のスピナーのように)?もしそうなら、あなたの質問にこの情報を編集してください。 –

答えて

0

角度インパルスが行くための正しい方法であります力を加えると、体全体が直線的に動くことになります。ほとんどすべての物理学のボディは、Newtons /(秒*秒)の単位で行われます(applyForceを除いて、これはバグのためにピクセルを使います)。これはあなたのシーンの150ポイントです。

は、あなただけのあなたのための変換を行うために派手な拡張を必要とする

extension CGFloat 
{ 
    public var toNewtons : CGFloat { return self/150.0 } 
} 

次に、あなただけの

let distanceInNewtons = distanceOfTouch.toNewtons 
node.physicsBody?.applyAngularImpulse(distanceInNewtons) 
+0

distanceOfTouchの単位がピクセルの場合、150で割ると距離がメートル単位で表示されます。角度インパルスの単位は、ニュートン秒(キロメートル毎秒)です。 – Epsilon

+0

私はあなたがここで論じているかコメントしているか分かりません、150点= 1ニュートン、それを毎秒150点と呼んでいますか? – Knight0fDragon

+0

SpriteKitで150ポイントは1ニュートンではありません。 – Epsilon

関連する問題