2017-12-02 31 views
0

私は非常に簡単なアプリを持っています。空から降りてくる四角形が物理学の体です。ユーザーが四角形をタップすると、ジャンプします。彼は果物が地面に触れるのを防ぐ必要があります。スウィフトのタッチに基づいて正しくスプライトを移動

今、私はアップルに触れるときに、そのposition.y += 10を移動すると思った。しかし、私はアップルが別のx方向にも飛び跳ねるようにしたいと思いますし、それを実装する方法はわかりません。

たとえば、四角形の左下の端をタッチすると、上に上がるだけでなく、右にもうまくいくはずです。

これを迅速に実装する方法はありますか?

+0

この回答を確認して教えてくださいhttps://stackoverflow.com/questions/38016756/swift-spritekit-rotate-sprite-in-the-direction-of-touch/38017316#38017316 –

+0

ありがとうございます探していた。私はあなたがサッカーボールをかわいくするかのようにスピリットノードを「キック」しようとしています。 –

答えて

3

すでにPhysicsBodiesがあるので、applyImpulse(_:,at:)を使用して、タッチしたときにオブジェクトに「バンプ」を適用できます。ベクトルを上に、位置をタッチの位置(オブジェクトの座標内)に設定します。

applyImpulse(_:)を使用すると、インパルスのベクトルを、タッチのX位置に従って左または右にバイアスをかけて設定して、左または右に押すことができます。さらに現実主義のために、それを少しスピンを与えるために同時にapplyAngularImpulse(_:)することができます。

+0

私が探していたものではありません。私はボールがあると想像してください。あなたは真ん中にそれを正確に触れると、それはまっすぐ上方にぶつかる。左下にタッチすると、左下に「キック」するので、右に少しぶつかります。 applyImpulseを使用すると、バンプするのに役立ちましたが、まっすぐ上だけでした。そして、私はちょうどあなたが触れた底のコーナーに基づいて側面に飛び越す必要があるので、偏った左右の 'dy:'を使用しないようにしたいと思います。あなたの余裕があればどうもありがとう。 –

+0

@ JushKillaBあなたは正しくapplyimpulseを使用していません。 atan2を使用して、接触している点とボールの中心との間の角度を計算し、ベクトル= x:m * cos(角度)、y:m * sin(角度) x軸の)ここで、mはあなたの力の大きさです – Knight0fDragon

関連する問題