Python 当玩家不再碰撞时,敌人停止移动
我有两个矩形,当老鼠到达矩形的两边时,它会左右移动,等待100秒,然后开始移动到另一边我的问题是如果我的玩家与右边的玩家相撞,我有2个命中框。敌人将向右移动并攻击玩家。如果玩家移动到左边,它将移动到左边并攻击玩家。但是正如你在下面的视频中看到的,如果我没有与老鼠命中框相撞,它将停止移动。我希望它继续左右移动,并等待100秒 老鼠就是这样移动的Python 当玩家不再碰撞时,敌人停止移动,python,pygame,Python,Pygame,我有两个矩形,当老鼠到达矩形的两边时,它会左右移动,等待100秒,然后开始移动到另一边我的问题是如果我的玩家与右边的玩家相撞,我有2个命中框。敌人将向右移动并攻击玩家。如果玩家移动到左边,它将移动到左边并攻击玩家。但是正如你在下面的视频中看到的,如果我没有与老鼠命中框相撞,它将停止移动。我希望它继续左右移动,并等待100秒 老鼠就是这样移动的 if move: if move_timer < 200: move_timer += 1 else:
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个问题,这需要很多人花很多时间来帮助你。为了让帮助你的人更容易理解,请通读和。做一个简单的回答特别有帮助,因为它使给出好的和准确的答案变得更容易。我正在尽我最大的努力问问题。对不起,如果我搞砸了