java 绘制螺旋线,java-如何创建漩涡/漩涡效果?

我试图在作为传感器的圆形物体上产生漩涡效果.

我一直在寻找它,我寻找的所有示例都在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);

这完全停止了身体的当前运动.我将从删除该行开始.另外,为了获得更好的逼真的行为,您可以按照正确的公式来计算吸引力,如下所示:

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

当具有从身体到黑洞的向量(计算为黑洞位置-身体位置)时,向量的长度就是该距离,并且在对力进行归一化并乘以后,便得到了所需的forceX和forceY力向量只要它保持在孔的范围内,每次更新都需要将其应用于身体.

但是,此公式将使力随着物体靠近孔而增大到无穷大,因此如果引起任何麻烦,您可以尝试更改为线性转换(最接近= 1,最接近= 0).

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

标签:java,libgdx,box2d,whirlpool,blackhole

来源: https://codeday.me/bug/20191012/1903407.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值