gpt4 book ai didi

c# - 我应该如何检测附近的物体以进行交互?

转载 作者:行者123 更新时间:2023-11-30 21:52:35 25 4
gpt4 key购买 nike

我一直在尝试让 Unity3d 中的角色与她面前的物体互动。在尝试了多种解决方案并更加熟悉它们之后,我迷路了。

我曾尝试在她前面使用一个附加到 & 的触发器碰撞器,但是触发器会根据正在移动的对象而产生问题。如果触发器本身正在移动并导致对象不再位于其范围内,则通常不会调用 OnTriggerExit。如果我没记错的话,如果触发器中的对象被销毁,也会出现同样的问题。

如果触发器在她正在与之交互的对象上,那么她可能会面朝后方并仍然与它交互。静止物体上的触发器也必须是物体每一侧的一个区域,这样她就可以与物体相邻,而不必真正面对它或非常靠近它。

光线转换似乎是一个很好的解决方案,但它们当然非常狭窄。想知道我是否遗漏了什么。

感谢您就最佳选择提供的任何帮助或意见。

最佳答案

由于您注意到 RayCast 可能有点窄,我的建议是使用 Physics.SphereCast()在玩家面前。它不是沿着一条线检查,而是基本上沿着指定方向检查胶囊状空间。

该方法使用与 Physics.RayCast() 非常相似的语法。这是一个示例用法:

Vector3 origin = transform.position;
float sphereRadius = 1.0f; // Change this as needed depending on tolerance you want
Vector3 direction = transform.forward;
RaycastHit hitInfo;
float maxCastDist = 5.0f; // Change this as needed depending on how close the object must be for interaction

if (Physics.SphereCast(origin, sphereRadius, direction, out hitInfo, maxCastDist)){
// Logic for checking whether object hit is interactable, etc using hitInfo.
}

希望对您有所帮助!如果您有任何问题,请告诉我。

关于c# - 我应该如何检测附近的物体以进行交互?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34664430/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com