gpt4 book ai didi

c++ - 如何在 Objective-C 中访问 Box2d 的 b2CollideCircles?

转载 作者:太空宇宙 更新时间:2023-11-04 12:17:59 25 4
gpt4 key购买 nike

我正在尝试使用 Box2d 测试一些碰撞检测(使用 this method )。我已将源代码和 header 添加到我的 XCode 项目中,并添加了递归 ./**到我的标题搜索路径。它看起来构建良好。

不幸的是,由于我不明白的原因,我不能直接使用碰撞检测方法。

CollisionTest.h:

#import <Foundation/Foundation.h>

@interface CollisionTest : NSObject
-(void)test;
@end

CollisionTest.mm: (正确重命名为 mm 以访问 C++ 代码)

#import "CollisionTest.h"
#import "Box2D.h"

@implementation CollisionTest

-(void)test {
b2CircleShape *circle1 = new b2CircleShape();
circle1->m_radius = 5.0;
b2Vec2 circle1Pos(0.0, 0.0);
b2Transform *transform1 = new b2Transform();
transform1->Set(circle1Pos, 0.0);
... ditto for circle2 ...

b2Manifold *manifold = new b2Manifold();
b2CollideCircles(&manifold, circle1, transform1, circle2, transform2);
if (manifold->pointCount > 0){
NSLog(@"collided");
} else {
NSLog(@"no collision");
}
}

@end

循环设置代码运行良好,但编译器在 b2CollideCircles 上出错行与“没有匹配函数调用‘b2CollideCircles’”。

Box2d.h似乎不包括 b2Collision.h默认情况下,所以我尝试将它作为 #import "b2Collision.h" 添加到我的实现文件中以及#import <Box2d/Collision/b2Collision.h> , 但错误仍然存​​在。

如何直接访问碰撞方法?

最佳答案

错误信息是编译器找不到适合我使用的签名的方法——我传递的变量不适合声明的方法参数的类型,而且由于 C++ 允许方法重载,它没有注册同样的方法。

正确定义变量(C++ 不是 Objective-C)并仔细阅读方法签名生成运行良好的代码:

b2CircleShape circle1;
circle1.m_radius = 5.0;
b2Vec2 circle1Pos(10.01, 0.0);
b2Transform transform1;
transform1.Set(circle1Pos, 0.0);
...
b2Manifold manifold;
b2CollideCircles(&manifold, &circle1, transform1, &circle2, transform2);

关于c++ - 如何在 Objective-C 中访问 Box2d 的 b2CollideCircles?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6687122/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com