模拟游戏 - 检查代理是否被阻止

时间:2012-12-28 22:50:19

标签: java simulation game-physics

我正在尝试编程捕食者/猎物类型模拟,其中两种不同类型的代理在模拟中移动。现在我有8个可能的移动方向(右,前右,前等等),代理可以为了让它看起来更自然,我想要实现基于角度的运动,如下所示:

xPos+= speed * Math.cos(Math.toRadians(angle));
yPos+= speed * Math.sin(Math.toRadians(angle));

我已经在模拟中实现了碰撞检测,其中代理不能相互重叠。 现在我面临的问题是,我怎么能检查我的代理人是否被阻止(由其他代理人装箱)因此无法移动。我以前的8向移动是我尝试移动其中一个八个可能的方向,如果代理人不能在那个方向上移动(碰撞或边界),那么从可能的移动方向中移除方向并再试一次。一旦没有移动方向,那么这意味着代理人已被装箱。

但是,如果我要实施基于角度的移动(如果确定单个可能的移动角度是非常低效的),我怎么能检查代理是否被装箱,如果没有它应该接下一个移动角度。(或者我应该只是坚持8向运动?

此时代理人朝着最近的食物移动,否则它会自由地漫游。代理人对转动速度等没有限制(现在可以立即转动)。

1 个答案:

答案 0 :(得分:1)

只需检查你角色周围的所有4个边界,就像你已经在做的那样,如果它们不可用,那么使四个对角线的动作同样不可用。