Advertisement
Zunesha

Objeto que aponta para a instancia de inimigos mais proxima dele

Nov 10th, 2023 (edited)
149
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. Objeto que aponta para a instancia de inimigos mais proxima dele ~>
  2.  
  3. No exemplo abaixo eu tenho um objeto(sprite de um seta) que eu quero que ela aponte sempre paraq a instancia  mais proxima dela de um objeto (inimigo, que tbm é apenas uma sprite e esta dentro de um grupo chamado "object2").
  4.  
  5. Vamos ao Script :
  6.  
  7. extends Sprite2D
  8.  
  9. var player = null                     # Criando a variavel player que posteriormente se refirá ao própio objeto da seta
  10. var enemies = []                      # Criando a variavel enemies que receberá um vetor contendo tds as instancias do inimigo na cena
  11.  
  12. func _ready():
  13.                                                        # Encontre referências para o objeto do jogador e para todos os objetos inimigos
  14.     player = self                                            # Como dito anteriormente, o player é o próprio objeto
  15.     enemies = get_tree().get_nodes_in_group("objeto2")       # Dessa forma eu tenho todas as instancias dos inimigos armazenadas
  16.    
  17.     #print(enemies)                                          # Posso imprimir o vetor de instancias de inimigos se eu quiser
  18.    
  19. func _process(delta):
  20.     # Encontrar o inimigo mais próximo
  21.     var closest_enemy = null                        # Variavel que vai receber qual inimigo esta mais proximo (inicialmente nula)
  22.     var closest_distance = 1e30                     # Variavel que vai receber a distancia da instancia mais proxima
  23.                                                     #(esse valor representa "quase" infinito
  24.  
  25.     for enemy in enemies:                           # Laço for para verificar a distancia de cada inimigo para com o player
  26.         var distance = player.global_transform.origin.distance_to(enemy.global_transform.origin)
  27.                
  28.        
  29.         if distance < closest_distance:             # Verifique se esta instância do inimigo está mais próxima
  30.             closest_distance = distance
  31.             closest_enemy = enemy
  32.        
  33.    
  34.     var dir = global_position.direction_to(closest_enemy.global_position)        # Pegando a direção da instancia mais proxima
  35.     rotation = dir.angle()                                  # Rotacionando a sprite para sempre "apontar" para a instancia mais proxima
  36.    
  37.     #print(closest_enemy.name)                              # Se eu quiser, posso imprimir o nome da instancia mais proxima também.
  38.  
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement