2016年11月21日月曜日

setCategoryBits setCollideBits pyode 衝突


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 件のコメント:

コメントを投稿

About

参加ユーザー

連絡フォーム

名前

メール *

メッセージ *

ページ

Featured Posts