私はランダムなプロジェクトを作成していますBox2dボディ。今私は、に基づいて行を描いていますDRAW方法でユーザーによってをTouchesMoved。私はそのラインとBOX2D団体との交点をチェックするBOX2D のレイキャスティングメソッドを使用する必要があります。Box2DのRayCasting?
私は私のDrawメソッド
for(int i = 0; i < [pointTouches count]; i+=2)
{
CGPoint startPoint = CGPointFromString([pointTouches objectAtIndex:i]);
CGPoint endPoint = CGPointFromString([pointTouches objectAtIndex:i+1]);
ccDrawLine(startPoint, endPoint);
b2Vec2 start=[self toMeters:startPoint];
b2Vec2 end=[self toMeters:endPoint];
[self checkIntersectionbtw:start:end];
}
-(void)checkIntersectionbtw:(b2Vec2)point1:(b2Vec2)point2
{
RaysCastCallback callback;
world->RayCast(&callback, point1,point2);
if (callback.m_fixture)
{
NSLog(@"intersected");
checkPoint = true;
}
}
-(void)ccTouchesMoved:(NSSet *)touches withEvent:(UIEvent *)event
{
UITouch *myTouch = [touches anyObject];
CGPoint currentTouchArea = [myTouch locationInView:[myTouch view]];
CGPoint lastTouchArea = [myTouch previousLocationInView:[myTouch view]];
currentTouchArea = [[CCDirector sharedDirector] convertToGL:currentTouchArea];
lastTouchArea = [[CCDirector sharedDirector] convertToGL:lastTouchArea];
[pointTouches addObject:NSStringFromCGPoint(currentTouchArea)];
[pointTouches addObject:NSStringFromCGPoint(lastTouchArea)];
}
にそれのために以下のコードを使用していますが、完全に引かれた線が体を通過するときのコールバックは、交差点を伝えます。ユーザーが外側のある点から開始してbox2d本体の中にポイントを残すと、コールバックはその線が交差したとは言いません。私はおそらく何が間違っているのですか?
レイキャスティングを使用してbox2d本体とタッチの接触を判別しましたか? – marciokoko