6

我正在尝试计算击打台球的角度并预测球的去向..我认为目标球应该在正常方向上移动..但它在完全不同的方向上移动

RaycastHit2D hit = Physics2D.CircleCast(cue.position, _radius, dir, 100f, ~(ignoreLayer));
if (hit.collider != null)
{
    Debug.DrawRay(hit.collider.transform.position, -1f * hit.normal, 
    Color.green, Time.fixedDeltaTime);
}

这是结果:

在此处输入图像描述

设置速度

rb.velocity = dir * force;

结果:

在此处输入图像描述

如何找到准确的移动方向,谢谢

编辑:

我已经尝试过双半径投射,这仅在中途起作用..仅当光线在内圈内时

4

1 回答 1

0

我想这只是物理引擎的限制,它针对速度和游戏使用进行了优化,并不那么精确。

我自己在一个简单的 2D 场景中进行了尝试,我发现如果我将摩擦力设置为 0.01,将弹力设置为 1.0,它会按照我的预期工作。(在 Unity 2020.1 中)

在我添加的小示例场景中,有一个球瞄准另一个球,因此产生的角度应该是 45 度。在将 phyics-mat 设置为摩擦力 0.01 和弹性 1.0 的属性后,得到的角度与预期的一样。

使用默认垫,我会得到与您描述的相同的行为。

你忘了分配物理材料吗?

您是否单步走到接触点并检查瞄准是否正确?

我的示例项目尝试这个

于 2020-04-18T11:35:32.573 回答