我正在尝试编写一个捕食者/猎物类型的模拟程序,其中两种不同类型的智能体在simulation.Right中四处移动。现在我有8个可能的移动方向(右、前、右、前等)。代理可以移动in.To,让它看起来更自然,我想实现基于角度的移动,如下所示:
xPos+= speed * Math.cos(Math.toRadians(angle));
yPos+= speed * Math.sin(Math.toRadians(angle));
我已经在模拟中实现了碰撞检测,其中代理不能相互重叠。现在我面临的问题是,我如何检查我的智能体是否被阻塞(被其他智能体装箱),从而不能在之前的8个方向上移动,我所做的就是尝试在八个可能的方向中的一个方向上移动,如果智能体不能在那个方向上移动(碰撞或边界),那么从可能的移动方向中删除该方向,并尝试不留下任何移动方向,这意味着该智能体已经被封装在move.With中了。
但是,如果我要实现基于角度的移动(当然,检查任何一个可能的移动角度是非常低效的),我如何检查代理是否已经被装箱,如果没有,它下一步应该选择哪个移动角度?.Or我应该坚持8个方向的移动吗?
此时智能体移动到视线中最近的食物,否则它在周围漫游,freely.The智能体对它可以转动的速度等没有限制(现在可以立即转动)。
发布于 2012-12-29 06:52:35
就像你已经做的那样,检查你角色周围的所有4个边界,如果它们不可用,那么让四个对角移动同样不可用。
https://stackoverflow.com/questions/14076773
复制相似问题