2017-09-08 8 views
0

私はPython Box2Dで以下のRayCastCallback関数を持っています。私はそれぞれの角度のための1つをインスタンス化して、これはうまく動作しますが、私の問題は、私が設定した世界では、複数の異なるタイプがあるということですBox2dのオブジェクトをレイキャスティングで無視するにはどうすればよいですか?

ray_cast_callback.p1 = position 
ray_cast_callback.fraction = 1.0 
ray_cast_callback.p2 = (position[0] + math.cos(radians)*range, position[1] + math.sin(radians)*range) 
world.RayCast(ray_cast_callback, ray_cast_callback.p1, ray_cast_callback.p2) 

を言って、それを使用

Class RayCastCallback(Box2D.b2.rayCastCallback): 
    def ReportFixture(self, fixture, point, normal, fraction): 
    if (fixture.filterData.categoryBits & 1) == 0: 
     return 1 
    self.p2 = point 
    self.fraction = fraction 
    return 0 

静的オブジェクトと動的オブジェクトを除外し、特定の静的オブジェクトのインスタンスを除外して、RayCastがそのオブジェクトの右端に移動するようにします。

どうすればよいですか?

答えて

1

通常、次の値をレイキャスティングでは、1が継続して最も近いヒットのためにレイをクリップするリターン0が終了する

-1をフィルタするタイプ、割合として使用されている

ますオブジェクトの型をチェックし、静的な場合は-1を返し、このオブジェクトを無視します。

関連する問題