首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Python RPG:查找敌人是否在玩家的范围内

Python RPG:查找敌人是否在玩家的范围内
EN

Stack Overflow用户
提问于 2014-08-16 04:13:34
回答 3查看 142关注 0票数 1

在我正在制作的角色扮演游戏中,在主游戏循环中,我需要在任何时候检查一个生物是否在玩家(用户)的4空间范围内,以便我可以启动/调用battle_loop函数。

我有一个用于所有敌人的类Creature,它具有PosXPosY属性。(这些坐标在初始化生物的新实例时包括在内,并且永远不会更改)。播放器也有自己的PosX和PosY变量,这些变量可以随着玩家的移动而改变。

那么,有没有办法可以检查生物的PosX值是否比玩家的PosX值多两个或两个以内,以及生物的PosY值是否比玩家的PosY值多两个或两个以内?

EN

回答 3

Stack Overflow用户

发布于 2014-08-16 04:22:46

您可以维护一个Creature对象列表并遍历它们。对于每个Creature,计算到播放器的距离,并相应调用battle_loop

代码语言:javascript
复制
for creature in creatures:
    if abs(creature.x - player.x) <= 2 and abs(creature.y - player.y) <= 2:
        battle_loop()
票数 1
EN

Stack Overflow用户

发布于 2014-08-16 04:23:51

只需运行一个for循环。

代码语言:javascript
复制
for creature in creatureList:

然后这样做:

代码语言:javascript
复制
if (creature.PosX > self.PosX - 2 & creature.PosX < self.PosX + 2) : doSomething()

对于y值,...and也是类似的。如果生物在玩家的2x和2y范围内,if语句将返回true。

票数 1
EN

Stack Overflow用户

发布于 2014-08-16 04:22:01

这很常见,你可能想要计算两个位置点(x,y)之间的Manhattaneuclidean距离,这取决于生物在游戏中的移动方式。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/25333524

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档