gpt4 book ai didi

java - 向一点移动时的圆碰撞 react

转载 作者:行者123 更新时间:2023-11-30 11:48:30 25 4
gpt4 key购买 nike

enter image description here

我有一些圆圈(可以有两个以上)正朝着一个点移动。截至目前,它们在靠近时会重叠。我怎样才能使它们不相交,但仍向该点移动?

我正在使用 Java。

  • 圆圈不是遵循物理定律的球,它们代表有机体(无关紧要)。
  • 我已经有碰撞检测了
  • 圆圈不会粘在一起,它们根本无法相交。

最佳答案

这不是一个简单的问题。

我假设您有一些系统可以计算圆的坐标,渲染它们,然后重复。这些重复称为帧。

每个圆都有一个 vector ,描述了它应该移动的方向。您需要在每一帧上执行碰撞检测,并在必要时更改该 vector 。

可以通过检查它们之间的距离是否小于它们的半径之和来检测任意两个圆之间的碰撞。碰撞圆心之间的线为您提供了碰撞的方向。圆的碰撞 vector 在碰撞方向上,指向圆心,其大小等于圆重叠单位数的一半,即半径之和减去它们之间的距离,除以二。 (如果圆圈的大小不等会变得更复杂,你需要弄清楚要划分多少。)

因此,您的问题的一种可能解决方案是简单地将碰撞 vector 添加到圆的方向 vector ,然后缩放方向 vector ,使其大小等于碰撞前的大小。 (这样只会调整它的方向,不会调整它的大小。)

请注意,这仅适用于您给出的特定描述,即您希望球粘在一起并继续向该点移动的位置;如果您想要更逼真的效果,则需要模拟台球类型的物理。

关于java - 向一点移动时的圆碰撞 react ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8774308/

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