我在地板上画了一个圆圈。所有经过该圆圈的东西都应该被检测到。以下代码有效:
void Update () {
RaycastHit hit;
Ray landingRay = new Ray (transform.position, Vector3.up);
// This debug does not seem to work:
Debug.DrawRay (transform.position, Vector3.up * 50);
if( Physics.Raycast(landingRay, out hit) ){
Debug.Log("raycast is working!");
}
}
但是,我认为 RayCast 仅位于我绘制的 Sprite 的中心 (1),因此它并没有覆盖整个圆 (2):
有执行此操作的最佳方法吗?或者我应该在同一个脚本中编写多个 RayCast 代码?
最佳答案
我建议在您的圆圈上放置一个球体或胶囊碰撞器(处于触发模式)并在 OnTriggerEnter()
中处理碰撞。这应该比光线转换更有效。
您可以看到official video tutorial关于这个主题。
关于unity-game-engine - 放大 RayCast 大小的最佳方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31971652/