Exemplo n.º 1
0
 def find_player(self):
     dist_sq = gobj.distance_sq(self.player.pos, self.pos)
     if self.type == 3: Enemy.CHASE_DISTANCE_SQ = 700**2
     if dist_sq < Enemy.CHASE_DISTANCE_SQ:
         if self.landon:
             self.fire()
         dir = gobj.direction(self.player.pos, self.pos)
         if dir == True:
             self.fl = 'w'
         else:
             self.fl = 'h'
Exemplo n.º 2
0
    def find_nearest_enemy(self):
        e = (sys.maxsize, None)
        max_attack_range = 160000
        for enemy in gfw.world.objects_at(gfw.layer.enemy):
            d = gobj.distance_sq(self.pos, (enemy.x, enemy.y))
            if e[0] > d and self.pos[0] < enemy.x:
                e = (d, enemy)

        if e[1] is not None and e[0] < max_attack_range:
            return e[1]
        else:
            return None
Exemplo n.º 3
0
 def find_player(self):
     dist_sq = gobj.distance_sq(self.player.pos, self.pos)
     if dist_sq < Zombie.CHASE_DISTANCE_SQ:
         if self.patrol_order >= 0:
             self.patrol_order = -1
             self.action = 'Attack'
         return BehaviorTree.SUCCESS
     else:
         if self.action == 'Attack':
             self.action = 'Idle'
             self.time = 0
         else:
             self.action = 'Walk'
         return BehaviorTree.FAIL