gpt4 book ai didi

objective-c - Box2d - 即时更改接触过滤器

转载 作者:搜寻专家 更新时间:2023-10-30 19:55:33 27 4
gpt4 key购买 nike

我正在使用 cocos2d (iOS) 和 box2d 创建游戏。
我已经到了需要在模拟中更改接触过滤器的地步,想知道如何去做。
我需要使用 maskbits 和 categorybits,这很好,我只是不确定如何将它们应用到 b2body 游戏中期。

我想我可能需要在初始化时检索 b2body 的原始 b2fixture 或 b2fixturedef,相应地更改值,然后调用一个方法来刷新 - world.Refilter()?

这听起来有点准确吗?

任何建议都非常感谢
奥利弗。

最佳答案

b2Filter filter;

for ( b2Fixture* f = body->GetFixtureList(); f; f = f->GetNext() ) {
f->GetFilterData( &filter );
filter.categoryBits = ...;
filter.maskBits = ...;
filter.groupIndex = ...;
f->SetFilterData( &filter );
}

显然,这会更改主体上所有 灯具的过滤器设置 - 如果您想要更具选择性,您将必须能够以某种方式分辨出哪个灯具是哪个。例如。如果您知道它是唯一的圆形灯具,您可以只查看灯具的类型来决定,否则我猜您将不得不使用灯具的用户数据。

关于objective-c - Box2d - 即时更改接触过滤器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6250701/

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