gpt4 book ai didi

box2d - 使 box2d 对象的速度永不改变

转载 作者:行者123 更新时间:2023-12-04 05:38:08 30 4
gpt4 key购买 nike

我在屏幕上有几个圆圈,放置在不同的位置(所有动态 box2d 主体)。

我想添加另一个圆,初始速度为 x, y .我想让这个 body 自由移动,好像没有重力一样。使所有碰撞具有 100% 弹性。

我尝试将弹性设置为 1,但是如果我从顶部放下它,它就不会再次接触到天花板。我希望它继续朝着它设置的方向移动,除非碰撞改变方向 .

为了进一步解释这一点,我想要的一个简单实现是在方形容器中,带有圆形主体。

when collides ->
set body.velocityX to -body.velocityX
set body.velocityY to -body.velocityY

当然,如果我在两者之间有 body ,这将不起作用。

使用 box2d 框架或伪代码的任何语言的建议将不胜感激。

最佳答案

除了设置弹性之外,您还需要将主体的阻尼设置为 0,以消除您现在看到的速度降低效果。
From the Box2d manual :

Damping is used to reduce the world velocity of bodies. Damping is different than friction because friction only occurs with contact.Damping is not a replacement for friction and the two effects shouldbe used together.

Damping parameters should be between 0 and infinity, with 0 meaning no damping, and infinity meaning full damping.

...

bodyDef.linearDamping = 0.0f;

bodyDef.angularDamping = 0.01f;

Damping is approximated for stability and performance. At small damping values the damping effect is mostly independent of the timestep. At larger damping values, the damping effect will vary with thetime step. This is not an issue if you use a fixed time step(recommended).


此外,如手册中所述,阻尼与摩擦力不同……因此您可能还想将主体的摩擦力设置为 0。

关于box2d - 使 box2d 对象的速度永不改变,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11657560/

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