gpt4 book ai didi

c++ - Box2d反重力问题

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

我正在使用 cocos2d 和 box2d。
目前我正在尝试优化我安装的系统,使某些物体的重力为 0。
在我的 tick 方法中,如果对象属性 object.isGravitated = NO,将调用反重力方法来使用 object.body->applyForce(b2Vec2(0,10));来抵消向下的力量。但这在 fps 方面似乎是昂贵的。
有多个 (5 - 10) isGravitated = NO 对象会导致 fps 下降大约 10fps 左右。

你觉得这对吗?有什么改进这个系统的建议吗?
谢谢

最佳答案

你可以直接修改 b2body,让它包含一个重力因子。默认情况下,将其设置为 1.0f,即正常重力。将其设置为 0.0f 表示没有重力。

重力是使用 b2Island 计算的,因此在 b2Island.cpp 中查找该行(它在 Solve 方法中):

b->m_linearVelocity += step.dt * (gravity + b->m_invMass * b->m_force);

修改它以将重力乘以重力因子。

这应该是快速、高效的,而且工作量不大。

你必须用 C 或 C++ 来做,而不是用 Objective-C,因为它是一个 C++ 对象。

关于c++ - Box2d反重力问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6288750/

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