我试图让这种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++却不太了解。这是该方法显示的错误的屏幕截图。
感谢您提供的任何帮助(在Chrome中,您可以右键单击并在新标签页中打开图片以更好地查看图片)
最佳答案
您需要更清晰地传递给Objective-C函数的变量。您所传递的没有类型,因此无法推断它实际上是C++类型而不是Objective-C类型。
尝试类似:
-(b2Vec2) RayCheckWithInput: (CPPTye*)p1 andX: (CPPTye*)p2
编辑:快速检查box2d文档说您需要以下内容:
-(b2Vec2) RayCheckWithInput: (b2Vec2)p1 andX: (b2Vec2)p2
编辑2 :同样值得注意的是,Raycast函数采用了docs中所述的第三个参数
childIndex
。关于c++ - 不了解这些C++ box2d错误,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/26205594/