Box2d RayCast

#define PTM_RATIO 1

b2Body * playerBody;

Point HelloWorld::createMyRayCast(b2Fixture * fixture ,Point point){
    
    b2RayCastInput input;

    input.p1.Set(point.x/PTM_RATIO,point.y/PTM_RATIO);

    input.p2.Set(point.x/PTM_RATIO,visibleSize.height/PTM_RATIO);

    input.maxFraction = 1.0f;

    b2RayCastOutput output;

    bool hit = fixture->RayCast(&output, input , 0 );

    if (hit)

    {

        b2Vec2 hitPoint = input.p1 +output.fraction * (input.p2 - input.p1);
        return Point(hitPoint.x* PTM_RATIO ,hitPoint.y* PTM_RATIO );
    }
    return Point(point.x,visibleSize.height);
}


void HelloWorld::update(float detal){
    float timeStep = 0.03f;   
    int32 velocityIterations = 8;     
    int32 positionIterations = 1;     


    world->Step(timeStep, velocityIterations, positionIterations); 

    for (b2Body* b = world->GetBodyList(); b; b = b->GetNext())                       
    {  
        if (b->GetUserData() != nullptr) {                                     
            Sprite* sprite = (Sprite*)b->GetUserData();    
            b2Vec2 pt = b->GetPosition();
            sprite->setPosition( Vec2( pt.x *   PTM_RATIO, pt.y * PTM_RATIO) );      
            sprite->setRotation( -1 * CC_RADIANS_TO_DEGREES(b->GetAngle()) );
            for (b2Fixture* f = b->GetFixtureList(); f; f = f->GetNext()) {
                Point pos = createMyRayCast(f,ccp(playerBody->GetPosition().x * PTM_RATIO ,playerBody->GetPosition().y * PTM_RATIO));
                log("%f,%f",pos.x,pos.y);
            }

            
        }  
    }  
}

```


如代码  ,一个有 playerBody 发出的垂直向上一直到屏幕边界的射线 , 利用射线检测与定制器的交点并打印出交点坐标 ,  可是没效果  , hit一直为否  if(hit)一直都执行不到 (即使已经确定相交了)