射线投射
3 分
Raycast 函数可以用于高效地在 Unity 场景中查找对象。
在 Unity 编程中,Raycast 是一种激光束,它会从场景中的某个位置发射,并持续发射直到碰撞到一个 Collider。 当它与一个 Collider 碰撞时,将返回碰撞对象的信息(RaycastHit)和在场景中的位置。
有关 Unity Raycast 的更多详细信息,请查看 Unity 指南。
📘 Unity Raycast https://docs.unity3d.com/Manual/CameraRays.html
Unity Raycast 可以通过完成以下步骤在 ZEPETO.Script 中使用:
首先,导入与 Raycast 相关的类。
import { Physics, RaycastHit } from 'UnityEngine';以下是 Raycast 函数的示例代码:
import { ZepetoScriptBehaviour } from 'ZEPETO.Script';
import { Physics, RaycastHit, Input, Camera } from 'UnityEngine';
export default class RaycastSample extends ZepetoScriptBehaviour {
Update() {
this.MouseControl();
}
MouseControl() {
if (Input.GetMouseButtonDown(0)) {
let ray = Camera.main.ScreenPointToRay(Input.mousePosition);
// 请注意,为了保留 RaycastHit 信息作为输出参数,它必须被包装在 $ref 标签中。
// 因为我们需要 out 限定符作为参数,所以我们创建一个引用而不实际创建一个对象。
let ref = $ref<RaycastHit>();
if (Physics.Raycast(ray, ref, 1000)) {
// 要检查返回的 Raycast 碰撞数据,请记得使用 $unref 解包引用
let hitInfo = $unref(ref);
console.log(`检测到碰撞!`);
console.log(`hitInfo.collider.name : ${hitInfo.collider.name}`);
} else {
console.log(`未能检测到碰撞`);
}
}
}
}
📘 请参考以下指南,以了解脚本中使用的 $ref 和 $unref 的解释。 [$ref & $unref]
通过测试代码,您可以通过在场景中用鼠标指针单击立方体来检查对象的信息输出。

通过以下链接查找有关 ZEPETO.Script 中使用的 Raycast API 的更多信息。