Unity3d台球/台球瞄准问题

Posted

技术标签:

【中文标题】Unity3d台球/台球瞄准问题【英文标题】:Unity3d Billiard/Pool aiming issue 【发布时间】:2018-06-16 09:54:33 【问题描述】:

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

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;

结果:

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

编辑:

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

【问题讨论】:

将速度设置为 hit.normal * force? 我们可以为目标球 OnCollisionEnter2D 设置这个,手动改变目标球速度..但这有点作弊..)我认为(希望)有移动直观的方式来实现这一点..谢谢@弗雷德里克·维德伯格 它取决于许多属性,包括 i) 球的质量(比率),ii) 球之间的阻力系数(1 = 弹性碰撞),iii) 球之间的摩擦力球(导致角动量转移)和iv)是否考虑旋转(作为iii的直接结果)) 你是否将球上的物理材料设置为零摩擦和零弹力? @LincolnC 是的,我也尝试将所有内容设置为零,保持默认设置等等.. 【参考方案1】:

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

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

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

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

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

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

my sample project trying this

【讨论】:

以上是关于Unity3d台球/台球瞄准问题的主要内容,如果未能解决你的问题,请参考以下文章

基于鼠标的瞄准 Unity3d

中式台球 规则 ( ChinaBilliards )

2544: 台球碰撞

虚拟台球4出现图像性能检测报错出现virtual pool4停止工作的解决办法

如何play billard

使用 SceneKit 的台球游戏中的后旋效果