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台球/台球瞄准问题的主要内容,如果未能解决你的问题,请参考以下文章