pyodeの衝突判定がまたわからなくなったので再考
以下 以前に書いたもの。
http://blogs.yahoo.co.jp/hhhappyyyymoto/42592382.html
資料①
サイコロ のシュミレーション
* ボディと地面にはビット1をON * タイヤにはビット2をON * 障害物にはビット3をON というようにカテゴライズ。 * タイヤと障害物と地面はそれぞれ当たり判定あり。 * タイヤとボディは当たり判定なし。 * ボディと地面は当たり判定あり。 * 障害物と地面は当たり判定なし。 地 面 2進数表示 floor.setCategoryBits(1) 1 floor.setCollideBits(3) 11 ボ ディ self.body.geom.setCategoryBits(1) 1 self.body.geom.setCollideBits(5) 101 タ イヤ? res.geom.setCategoryBits(2) 10 res.geom.setCollideBits(6) 110 障害物? obstacle.geom.setCategoryBits(4) 100 obsacle.geom.setCollideBits(6) 110
AのsetCategoryBits()でどこかにビット1がたっていて Bの setCollideBits()の同じ場所にビット1がたっていれば衝突する。 たとえ逆の場合がなりたたなくても。 (BのsetCategoryBits()でどこかにビット1がたっていて AのsetCollideBit s()の同じ場所にビット1がたっていなくても)
ちょとわかりにくかったので
L:\goolgedrive\myprg_main\python_my_prg\ball_ball_bound.py 重力を0にしてボールをボールにぶつけるもの
で 上のパラメータを変化してテストした。
結果
AのsetCategoryBits()でどこかにビット1がたっていて Bの setCollideBits()の同じ場所にビット1がたっていれば衝突する。 たとえ逆の場合がなりたたなくても。 (BのsetCategoryBits()でどこかにビット1がたっていて AのsetCollideBit s()の同じ場所にビット1がたっていなくても)
下記画像参照
画像の最後setCollideBits(6)は 111の間違いです
0 件のコメント:
コメントを投稿