Unity3d Billiard / Pool瞄准问题

时间:2018-06-16 09:54:34

标签: unity3d physics game-physics raycasting billiards

我试图计算撞到球池的角度并预测球将进入的位置。 我认为目标球应该在正常方向上移动..但它会移动 完全不同的方向

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);
}

结果如下:

enter image description here

设定速度

rb.velocity = dir * force;

结果:

enter image description here

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

修改

我尝试过双半径投射这只有一半工作..只有在内圈内的光线

1 个答案:

答案 0 :(得分:0)

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

在一个简单的2D场景中自己尝试一下,我发现如果将摩擦力设置为0.01,将反弹度设置为1.0,则它会按我期望的方式工作。 (在Unity 2020.1中)

在我添加的小样本场景中,有一个球瞄准另一个球,因此最终角度应为45度。并且在将phyics-mat设置为具有0.01的摩擦力和1.0的反弹度的特性之后,所得的角度如预期的那样。

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

您忘记分配物理材料了吗?

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

my sample project trying this