Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/288.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 如果玩家在敌人的半径范围内,改变状态_Python_Pygame - Fatal编程技术网

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,谢谢你的简化。我已相应地更新了答案。