BodyDef / FixtureDef是否在Farseer Physics中可用?

时间:2014-09-11 05:07:56

标签: xna farseer

我搜索了我为Farseer找到的所有文档,但在我的项目中找不到如何使用BodyDef / FixtureDef。当它们从Box2D移植时,这些是否被重命名为其他东西?

我主要担心的是完成类似以下的事情:

FixtureDef fdef;
fdef.isSensor = true;

1 个答案:

答案 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也使用了方便的工厂类。请查看文档以获取更多信息。

https://farseerphysics.codeplex.com/documentation