gpt4 book ai didi

c# - 如何确定在特定坐标处是否有物体位于平面上?

转载 作者:行者123 更新时间:2023-11-30 17:56:36 25 4
gpt4 key购买 nike

我正在 3D 环境中实现 A* 算法,我已经到了需要确定平面(我的角色将在其上行走)的特定坐标处是否有物体的地步。

我创建了一个 Board 类,它包含 Nodes 的 map (每个节点都包含其坐标的中心)。所以我们可以说我已经将平面离散化为类似棋盘的东西。现在我需要知道每个 Node 上是否有东西可以在这个平面上创建一个可行走/不可行走的 map 。

我如何在 Unity3D 中执行此操作?光线转换?

编辑

有一件事我能想到,但我觉得它有点低效:

创建一个临时碰撞器(占 Board 的瓷砖面积和一些高度)并检查是否有东西与之碰撞,然后继续为 Board< 中的每个瓷砖平移它

你认为这是一个好方法吗?

最佳答案

您可以使用来自每个节点坐标的光线转换 ( Physics.Raycast )。确保您正在检查的对象具有碰撞器。这只会检查单个点,而不是节点的整个区域。

要检查每个节点上方的区域,而不仅仅是一个点,您可以使用球体或胶囊转换或检查。查看类函数列表中的选项 Physics .

另一种方法是在场景中的每个节点上设置一个带有适当形状的触发器碰撞器的游戏对象。您可以通过递增和递减 OnTriggerEnter 中的计数器来跟踪每个节点上有多少其他对象(带有碰撞器)和 OnTriggerExit脚本的方法(即 MonoBehaviour 子类)。

关于c# - 如何确定在特定坐标处是否有物体位于平面上?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14038787/

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