Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/excel/23.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,我有两个矩形,当老鼠到达矩形的两边时,它会左右移动,等待100秒,然后开始移动到另一边我的问题是如果我的玩家与右边的玩家相撞,我有2个命中框。敌人将向右移动并攻击玩家。如果玩家移动到左边,它将移动到左边并攻击玩家。但是正如你在下面的视频中看到的,如果我没有与老鼠命中框相撞,它将停止移动。我希望它继续左右移动,并等待100秒 老鼠就是这样移动的 if move: if move_timer < 200: move_timer += 1 else:

我有两个矩形,当老鼠到达矩形的两边时,它会左右移动,等待100秒,然后开始移动到另一边我的问题是如果我的玩家与右边的玩家相撞,我有2个命中框。敌人将向右移动并攻击玩家。如果玩家移动到左边,它将移动到左边并攻击玩家。但是正如你在下面的视频中看到的,如果我没有与老鼠命中框相撞,它将停止移动。我希望它继续左右移动,并等待100秒

老鼠就是这样移动的

if move:
    if move_timer < 200:
        move_timer += 1
    else:
        rat1.direction = "move2"
        rat1.x += 1


if move2:
    if move_timer2 < 200:
        move_timer2 += 1
    else:
        rat1.direction = "move"
        rat1.x -= 1

        
if rat1.rect.colliderect(rat11.rect):
    rat1.direction = "idle"
    move = True
    move2 = False
    move_timer2 = 0

    
elif rat1.rect.colliderect(rat22.rect):
    rat1.direction = "id"
    move = False
    move2 = True

    move_timer = 0
在这里,我这样做,如果老鼠与playerman hitbox碰撞,那么它应该播放攻击动画
move
,并且
move2
应该为false,因为我们不希望敌人向左移动,现在它应该坚持攻击玩家

if rat1.direction == "move2":
    if playerman.rect.colliderect(rat1.rect):
        move = False
        move2 = False
        rat1.direction = "at"
        

if rat1.direction == "move":
    if playerman.rect.colliderect(rat1.rect):
        move = False
        move2 = False
        rat1.direction = "att"

我不确定我是否能很好地解释我的问题,但我想说的是,如果玩家没有撞到将老鼠更多地移向玩家敌人的击盒,我怎么能让我的老鼠继续沿着它一直移动的方向移动,当敌人的老鼠攻击时,我怎么能阻止我的老鼠左右移动的矩形玩家。

很难遵循您的逻辑,但似乎您需要一个附加条件。如果未设置
move
move2
,且老鼠未与玩家碰撞,老鼠必须继续移动:

if rat1.direction == "move2":
    if playerman.rect.colliderect(rat1.rect):
        move = False
        move2 = False
        rat1.direction = "at"
        

if rat1.direction == "move":
    if playerman.rect.colliderect(rat1.rect):
        move = False
        move2 = False
        rat1.direction = "att"
如果不移动和不移动2:
如果不是playerman.rect.collide rect(rat1.rect):
如果rat1.direction==“at”:
move=True
move2=False
移动计时器=200
rat1.direction=“移动”
elif rat1.direction==“附件”:
move=False
move2=真
移动时间r2=200
rat1.direction=“move2”

是的,没错,但是如果玩家移动到移动的旁边,或者移动2不会导致故障,或者在敌人攻击目标时我有没有办法禁用它们player@HabibIsmail对不起,我不知道你在说什么。你试过密码了吗。代码只是有一个效果
如果不移动和不移动2
好的,我尝试并测试了它,我不知道为什么,但有时当我向下移动并离开鼠标时,它只是停止工作,但同时它没有,我已经更新了我的question@HabibIsmail你已经改变了你的问题。现在我的答案没用了。nvm修复了这个问题。很抱歉,请不要将你的问题编辑为一个全新的问题。另外,你目前已经问了127个问题,这需要很多人花很多时间来帮助你。为了让帮助你的人更容易理解,请通读和。做一个简单的回答特别有帮助,因为它使给出好的和准确的答案变得更容易。我正在尽我最大的努力问问题。对不起,如果我搞砸了