我搜索了我为Farseer找到的所有文档,但在我的项目中找不到如何使用BodyDef / FixtureDef。当它们从Box2D移植时,这些是否被重命名为其他东西?
我主要担心的是完成类似以下的事情:
FixtureDef fdef;
fdef.isSensor = true;
答案 0 :(得分:1)
虽然Farseer Physics起源于Box2D,但它并不是它的确切端口。它有一些相似之处,但它以自己的方式做事(我猜想更熟悉C#程序员)。它没有使用Def类。我相信以下两个例子是等价的:
C ++
// create a body
b2BodyDef bodyDef;
bodyDef.type = b2_dynamicBody;
bodyDef.position.Set(-10, 20);
b2Body* body = world->CreateBody(&bodyDef);
// create a shape
b2CircleShape circleShape;
circleShape.m_radius = 0.5f;
// create a fixture
b2FixtureDef myFixtureDef;
myFixtureDef.shape = &circleShape;
body->CreateFixture(&myFixtureDef);
C#
// create a body
var body = world.CreateBody();
body.BodyType = BodyType.Dynamic;
body.Position = new Vector2(-10, 20);
// create a shape
var circleShape = new CircleShape(0.5f);
// create a fixture
var fixture = body.CreateFixture(circleShape);
从正文中可以看出,主要区别在于您在创建后在实际实例上设置属性而不是def类。
Farseer Physics也使用了方便的工厂类。请查看文档以获取更多信息。