不明白这些C ++ box2d错误

时间:2014-10-05 18:01:32

标签: c++ ios objective-c xcode box2d

我试图让这个C ++方法在我的iOS游戏中运行。

-(b2Vec2) RayCheckWithInput:p1 andX:p2
{
    b2RayCastInput input;
    input.p1 = p1;
    input.p2 = p2;
    input.maxFraction = 1;

    //check every fixture of every body to find closest
    float closestFraction = 1; //start with end of line as p2
    b2Vec2 intersectionNormal(0,0);
    for (b2Body* b = self.world.world->GetBodyList(); b; b = b->GetNext()) {
        for (b2Fixture* f = b->GetFixtureList(); f; f = f->GetNext()) {

            b2RayCastOutput output;
            if ( ! f->RayCast( &output, input ) )
                continue;
            if ( output.fraction < closestFraction ) {
                closestFraction = output.fraction;
                intersectionNormal = output.normal;
            }
        }
    }

    b2Vec2 intersectionPoint = p1 + closestFraction * (p2 - p1);

    return intersectionPoint;
}

我对obj-c很了解,但不是C ++。这是一个屏幕截图,显示了它所显示的方法的错误。

enter image description here

感谢任何帮助(在Chrome中,您可以右键单击并在新标签页中打开图片以便更好地查看)

1 个答案:

答案 0 :(得分:2)

您需要更明确地使用传递给Objective-C函数的变量。您没有输入类型,因此无法推断它实际上是C ++类型而不是Objective-C类型。

尝试类似:

-(b2Vec2) RayCheckWithInput: (CPPTye*)p1 andX: (CPPTye*)p2

编辑 :快速检查一下box2d文档说你需要这样的东西:

-(b2Vec2) RayCheckWithInput: (b2Vec2)p1 andX: (b2Vec2)p2

编辑2 :另外值得注意的是,Raycast功能采用docs中描述的第三个参数childIndex