1

シーンに浮かんで他のボディなどと衝突する単一のcpShapeを持つcpBodyがあります。このボディを簡単に1つの場所にとどめ、静的な障害物が1つの場所にとどまるように振る舞って、移動しなくても他のボディと衝突するようにするにはどうすればよいですか。

ユーザーが体をタップしたときに体が動かないようにしたいだけです。だから私は尋ねています。私はシマリスの専門家ではありませんが、簡単なことだと思います。

4

2 に答える 2

5

パブリックAPIを使用してこれを行う方法は、スペースからボディとシェイプを削除することです。古い動的ボディと同じ位置/回転で新しい静的ボディを作成します。cpShapeSetBody()を使用して、ボディを新しい静的なボディに変更してから、形状をスペースに読み取ります。

于 2012-06-13T19:26:17.390 に答える
1

cpBodySetMassINFINITYを呼び出して、オブジェクトを強制的にスリープさせることができますcpBodySleep。これは、静的オブジェクトが内部的に(少なくとも質量に関して)実装される方法です。

編集

この後電話する必要があるかどうかはわかりませcpBodySleepんが、電話するのは悪くないと思います。

変更して最初cpBody.hに配置します。#define CP_ALLOW_PRIVATE_ACCESS 1次に、からcpBody*にアクセス->node.idleTimeして、INFINITYに設定します。

編集2

上記の解決策は実用的な解決策ですが、SEの実践に関してはあまり良くありません。オブジェクト全体のプライベートプロパティを無効にせずに呼び出すことができるように、オブジェクトを静的または動的にする関数を定義することをお勧めします。

于 2012-06-13T10:47:47.423 に答える