gpt4 book ai didi

java - 如何创造漩涡/漩涡效果?

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

我正在尝试在作为传感器的圆形体上产生涡流效果。我一直在寻找这个,我寻找的所有示例都是用 C++ 或 Objective C 编写的,但我似乎没有很好地翻译它们。

当我的对象发生碰撞时,它会调用 beginContact(..) 并设置一个标志,以便我可以调用 bodyToUpdate.applyForce(...);

 public void beginContact(Contact contact) {
setColliding(true);
}

//updating collition every frame
public void act(){
if (colliding) {
ball.getBody().applyForce(....);

}

如何计算每一帧施加的力以使其成为漩涡?

编辑:

所以我现在让物体直接进入漩涡中心,但没有“旋转”

public void act() {
if (colliding) {
ball.getBody().setLinearVelocity(0, 0);

ball.getBody().applyForce((portal.getBody().getPosition().x - ball.getBody().getPosition().x) * i,
(portal.getBody().getPosition().y - ball.getBody().getPosition().y) * i,
ball.getBody().getPosition().x, ball.getBody().getPosition().y, true);

i++;
} else
i = 10;
}

最佳答案

如果“旋转”意味着下落的物体会沿着曲线或螺旋运动,而不是立即改变运动方向朝向黑洞,那么有一个简单的解决方案。

ball.getBody().setLinearVelocity(0, 0);

这完全停止了 body 当前的运动。我首先删除该行。此外,为了获得更好的现实行为,您可以遵循正确的公式来计算吸引力,如下所示:

force = mass1 * mass2 * [some constant] / (distance ^ 2)

当你有从你的 body 到黑洞的 vector (计算为黑洞位置 - body 位置)时, vector 的长度就是距离,在归一化并乘以力之后,您就有了所需的 forceXforceY 力 vector ,每次更新时都需要将其应用于主体,只要它保持在孔的范围内即可。

但是,当物体靠近孔时,这个公式会导致力增长到无穷大,因此如果这会引起任何问题,您可以尝试更改为线性转换(最近 = 1,最远 = 0)。

force = mass1 * mass2 * [some constant] * ( (maxDistance - distance) / maxDistance )

关于java - 如何创造漩涡/漩涡效果?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25940650/

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