在我正在制作的RPG中,在主游戏循环中,我需要检查一个生物是否在玩家(用户)的4个空间范围内,以便我可以发起/调用{{1}功能。
我有一个班级battle_loop
,用于所有敌人,其中包含Creature
和PosX
属性。 (初始化一个新的Creature实例时会包含这些坐标,并且永远不会更改)。玩家还拥有自己的PosX和PosY变量,可以在玩家四处移动时改变。
那么有没有办法可以检查Creature的PosX值的实例是否比玩家的PosX值少两个或两个以上,并且如果Creature的PosY值的任何实例在玩家的PosY的两个或两个以内的范围内值?
答案 0 :(得分:1)
您可以维护Creature
个对象的列表并循环遍历它们。对于每个Creature
,计算与播放器的距离并相应地调用battle_loop
:
for creature in creatures:
if abs(creature.x - player.x) <= 2 and abs(creature.y - player.y) <= 2:
battle_loop()
答案 1 :(得分:1)
只需运行for循环。
for creature in creatureList:
然后做这样的事情:
if (creature.PosX > self.PosX - 2 & creature.PosX < self.PosX + 2) : doSomething()
......和y值相似。如果生物在玩家的2 x和2 y范围内,则if语句将返回true。
答案 2 :(得分:0)