Python 如果玩家在敌人的半径范围内,改变状态
所以在过去的几个月里,我一直在自学一些Python 如果玩家在敌人的半径范围内,改变状态,python,pygame,Python,Pygame,所以在过去的几个月里,我一直在自学一些pygame,做一个太空船游戏 我有多艘敌方宇宙飞船守卫着一个特定区域。如果玩家来到他们的某个半径范围内,我想改变敌人的状态。对于初学者来说,不使用向量的最佳方法是什么?您可以在程序中创建一个名为is\u close的方法,然后对每个玩家和敌人进行比较。它看起来像这样: def is_close(object1, object2, distance): return math.hypot(object2.x-object1.x, object2.y-
pygame
,做一个太空船游戏
我有多艘敌方宇宙飞船守卫着一个特定区域。如果玩家来到他们的某个半径范围内,我想改变敌人的状态。对于初学者来说,不使用向量的最佳方法是什么?您可以在程序中创建一个名为
is\u close
的方法,然后对每个玩家和敌人进行比较。它看起来像这样:
def is_close(object1, object2, distance):
return math.hypot(object2.x-object1.x, object2.y-object1.y) < float(distance)
... #rest of your code
while True: #This is your main while loop
... #rest of your code
for enemy in enemies:
if is_close(player, enemy, 25):
enemy.state = new_state #change state, this may simply be a color change
def接近(object1、object2、距离):
返回math.hypot(object2.x-object1.x,object2.y-object1.y)
计算每次滴答声时它们之间的距离,如果距离低于某个值,则采取措施…?好的,滴答声是什么意思?我的意思是每次围绕主游戏循环,当你可能调用时,我假设一个简单的2D游戏,你可以简单地“画”一个圆(或正方形,随便什么)在你的敌人周围,然后在游戏循环中,你会检查你的玩家是否与那个看不见的人物发生碰撞。第二个答案应该告诉你如何进行碰撞检测。使用返回True如果其他条件为False
是多余的,只需使用返回一些条件即可。另外,要获得两点之间的欧几里德距离,只需使用内置的math.hypot
函数;不需要自己重新创建这样的函数。所以is\u close
可以简化为return math.hypot(object2.x-object1.x,object2.y-object1.y)
@DominicKexel,谢谢你的简化。我已相应地更新了答案。