我目前正在Unity3D中开发一个人工智能系统,我想知道是否有人能建议以下哪一种意识模型更好?
主要担心性能与质量,我有一种感觉,模型1更快,直到AI需要检查它周围的每一个特定项目,在这种情况下,模式2将返回更快,因为它已经收集了本地利益。然而,模型2是否会占用更多的资源,因为触发对撞机需要发送每一次物理更新的检查?
发布于 2015-10-07 20:32:55
您的2方法是最好的方法,尽管如此,我可以很容易地说,这一切都取决于您的需求,两者都有自己的用途。(我是“做事情的唯一绝对方式-有点像男人”)
带触发器的
void OnTriggerEnter(Collider other)
你只能得到一个碰撞体,从许多已经碰撞。如果你有较大的碰撞,它会更快,并且你可以确定地扩展和收缩你的触发器的半径,几乎把它用作与重叠球体相同的效果(但不推荐有保证的结果)。因为它只检测到一个碰撞的身体,它的处理器不密集。
使用重叠球方法,您可以
Collider[] OverlapSphere(Vector3 position, float radius, int layerMask, QueryTriggerInteraction queryTriggerInteraction);
您可以获得collider[]或已碰撞的多个碰撞体。这是处理器密集型的,如果有50个对象发生冲突,并且性能会降低调用此函数的时间。
另一种方法.
为了简单和正确的设计力学,触发体可以解决任何复杂的情况。我必须告诉你,从我的经验来看,解决你的问题所依赖的视角是限制你的思想和最终结果的因素。
记住这一点,我想让您尝试一下这个approach...create --一种使用
public static float Distance(Vector3 a, Vector3 b);
给你一个布尔的答案来检测你的演员。这是一种非常好的方法,因为只有一个语言原语被流(在两个参与者之间),而不是一个对象,内置函数的性能可以忽略不计。您可以让每个敌方演员在List中注册自己(以获取所有感兴趣的演员),如果他们处于期望的接近范围内(所以是的,您的敌人检查它是否接近主演员,并告诉演员他是非常接近的)。
我在ipod 5中测试了20名其他演员的脚本,几乎没有出现任何性能下降。
https://stackoverflow.com/questions/31952953
复制相似问题