シーンに浮かんで他のボディなどと衝突する単一のcpShapeを持つcpBodyがあります。このボディを簡単に1つの場所にとどめ、静的な障害物が1つの場所にとどまるように振る舞って、移動しなくても他のボディと衝突するようにするにはどうすればよいですか。
ユーザーが体をタップしたときに体が動かないようにしたいだけです。だから私は尋ねています。私はシマリスの専門家ではありませんが、簡単なことだと思います。
シーンに浮かんで他のボディなどと衝突する単一のcpShapeを持つcpBodyがあります。このボディを簡単に1つの場所にとどめ、静的な障害物が1つの場所にとどまるように振る舞って、移動しなくても他のボディと衝突するようにするにはどうすればよいですか。
ユーザーが体をタップしたときに体が動かないようにしたいだけです。だから私は尋ねています。私はシマリスの専門家ではありませんが、簡単なことだと思います。
パブリックAPIを使用してこれを行う方法は、スペースからボディとシェイプを削除することです。古い動的ボディと同じ位置/回転で新しい静的ボディを作成します。cpShapeSetBody()を使用して、ボディを新しい静的なボディに変更してから、形状をスペースに読み取ります。
cpBodySetMass
INFINITYを呼び出して、オブジェクトを強制的にスリープさせることができますcpBodySleep
。これは、静的オブジェクトが内部的に(少なくとも質量に関して)実装される方法です。
編集
この後電話する必要があるかどうかはわかりませcpBodySleep
んが、電話するのは悪くないと思います。
変更して最初cpBody.h
に配置します。#define CP_ALLOW_PRIVATE_ACCESS 1
次に、からcpBody*
にアクセス->node.idleTime
して、INFINITYに設定します。
編集2
上記の解決策は実用的な解決策ですが、SEの実践に関してはあまり良くありません。オブジェクト全体のプライベートプロパティを無効にせずに呼び出すことができるように、オブジェクトを静的または動的にする関数を定義することをお勧めします。