2

SpriteKit を使い始めたところ、問題が発生しました。

オブジェクトが必要です。私はそれをplayerControllerと呼びます。これは、プレーヤーのタッチとパックに追従し、コントローラーにヒットする可能性があり、その場合コントローラーがバウンスします。

なんとなくエアホッケーのようなゲーム。

テクスチャと物理演算を使用して 2 つの SKNode を構築したため、重力がオンになっている場合やコントローラーが一定の速度で移動している場合に、それらが互いに適切に跳ね返ります。

ただし、コントローラーが次のアクションによって動かされた場合、パックは跳ね返りません。

SKAction *moveTo = [SKAction moveTo: CGPointMake(touch.position.x ,touch.position.y) duration: 0.1];
[self.controllerPlayerOne runAction: moveTo];

なんで?すでにドキュメントといくつかのチュートリアルを検索しましたが、問題に対処するものはありませんでした。これは SpriteKit の開発者が望んでいるのかもしれませんが、この場合、タッチに追従することはどのように実現されるのでしょうか?

うまくいけば、誰かが助けてくれるでしょう。

編集:

現在、コントローラーの位置をタッチ位置に設定し、タッチが移動するたびに、タッチの最後の位置と現在の位置を使用して速度を計算することにより、コントローラーパックの動作を取得しました。

これはかなりうまくいっています。

4

1 に答える 1

6

これは仕様によるものです。cocos2d でも同じ動作が見られます。

つまり、移動アクションは、物理ボディではなく、スプライトを移動します。物理ボディがスプライトをたどる場合でも、移動アクションは物理ボディの動きを無効にし、せいぜいスプライトがある場所に置きます。

代わりに、物理ボディを使用する場合は、ボディの速度を変更して移動する必要があり、移動アクションを確実に使用することはできなくなりました。次に、物理ボディがスプライトを動かします。

于 2013-10-29T15:04:19.913 に答える