c – 如何从box2D中的Body *获取灯具的Shape点数?

c – 如何从box2D中的Body *获取灯具的Shape点数?,第1张

概述嘿,我正在尝试集成Box2D和SFML,我的类接受一个Body指针,我需要使用它来获取一个fixture的所有点,这样我就可以形成一个身体的图形表示. 我如何得到这些积分? 你可以像这样迭代一个体内的灯具: for (b2Fixture* f = body->GetFixtureList(); f; f = f->GetNext()) { ....} 一旦你有一个夹具你需要检查它有什么 @H_404_2@ 嘿,我正在尝试集成Box2D和SFML,我的类接受一个Body指针,我需要使用它来获取一个fixture的所有点,这样我就可以形成一个身体的图形表示.

我如何得到这些积分?

解决方法@H_301_13@ 你可以像这样迭代一个体内的灯具:

for (b2Fixture* f = body->GetFixtureList(); f; f = f->GetNext()) {    ....}

一旦你有一个夹具你需要检查它有什么样的形状,然后转换为该形状类型来访问形状数据:

b2Shape::Type shapeType = fixture->GetType();if ( shapeType == b2Shape::e_circle ){    b2CircleShape* circleShape = (b2CircleShape*)fixture->GetShape();    ...}else if ( shapeType == b2Shape::e_polygon ){    b2polygonShape* polygonShape = (b2polygonShape*)fixture->GetShape();    ....}

使用GetVertexCount()和GetVertex()从多边形形状中获取顶点.

请注意,存储在夹具中的顶点位置在主体坐标中(相对于夹具所连接的主体).要获取世界坐标中的位置,您必须乘以体变换:

b2Vec2 worldPos = body->GetWorldPoint( localPos );
@H_404_2@ 总结

以上是内存溢出为你收集整理的c – 如何从box2D中的Body *获取灯具的Shape点数?全部内容,希望文章能够帮你解决c – 如何从box2D中的Body *获取灯具的Shape点数?所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/langs/1214005.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-06-04
下一篇 2022-06-04

发表评论

登录后才能评论

评论列表(0条)

保存