gpt4 book ai didi

java - Boids 中的矩形避免

转载 作者:行者123 更新时间:2023-12-02 11:20:25 24 4
gpt4 key购买 nike

我正在用 Java 对 80 年代的经典 Boid 模拟进行改编。它工作得很好,但我正在尝试为行为添加一个新规则,迫使代理避开矩形(墙壁),但我不知道如何解决这个问题。

我看过这个帖子:

https://gamedev.stackexchange.com/questions/45381/wall-avoidance-steering

但是我对最终代码中使用的语法(如 partsList[j] -> 正常)以及如何获取代理和矩形之间的距离以及如何实际将代理驱走感到困惑。不过这个公式是有道理的。有人可以向我解释一下吗?非常感谢!

附注我一直在关注this伪代码,我还使用了 this Java源代码作为引用。

编辑:好吧,我明白为什么我对语法感到困惑,但在编写避开墙规则时我仍然一无所知。

最佳答案

啊,我记得 80 年代, boids 模拟......

一般呈boids状steering behaviors这个想法是针对代理的速度(动量)施加行为“转向力”。因此,实现任何给定的转向行为都可以归结为找到一些几何构造,该几何构造可以生成指向您想要转向的方向的 vector 。理想情况下,这些将是切向转向力(垂直于当前速度),以便转向独立于速度控制。

在避开墙壁的情况下(矩形可以被认为是四堵墙),总体思路是采用远离(垂直于)墙壁的 vector 。使用投影(点积),您可以分离出该力的平行于速度 vector 和垂直于速度 vector 的分量。垂直于智能体速度的墙壁法线分量是一个转向力,它将使智能体远离墙壁。

另一个方面是知道何时使用这种避开墙壁的行为。一个有用的方法是选择一个时间范围,比如 2 秒,并决定代理是否会在这段时间内撞墙。使用当前位置、速度和时间值,您可以对代理在 2 秒内所处的位置进行简单的线性预测。如果它在这段时间内越过墙壁,那么它应该使用其避开墙壁的行为。

有关更多信息,请在 GDC 99 paper 中查找“遏制” ,和/或看看这些: http://natureofcode.com/book/chapter-6-autonomous-agents/ https://gamedevelopment.tutsplus.com/series/understanding-steering-behaviors--gamedev-12732

关于java - Boids 中的矩形避免,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49961738/

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