Diferencias objetos por metodos

Enviado por tech4life el

A veces en nuestro código tenemos funciones a las que le pueden llegar diferentes objetos/ nodos, por ejemplo un signal que nos indique que un objeto ha entrado en nuestra zona.

En el ejemplo que comentamos, podriamos tener una función asociada al "body_entered" y queremos saber que tipo de Node2D ha entrado en nuestra zona.

Para ello podemos utilizar diferentes formas pero una de ella, es mirar si el objeto que nos llega (body) tiene una función en concreto, y luego podemos mirar lo que nos devuelve esa función.

Imaginemos que nos puede entrar como body del signal, un Node2D que sea un compañero o un enemigo. En ese caso podemos mirar si el body que nos ha entrado en contacto tiene un metodo cualquiera, que nosotros sepamos que solo lo tienen los que son nuestros comppañeros. De esa manera podemos identificar si es un compañero o un enemigo.

func _on__body_entered(body):
	if body.has_method("get_team") and body.get_team() == team:
		print("Es un amigo")

En este caso miramos si el body que ha entrado tiene la función get_team y si la tiene, si es del mismo "team" que en la clase en la que estamos. En ese caso no hacemos nada, porque se supone que el objeto que ha entrado tiene la función get_team y tiene asignado el mismo team que nosotros

Nivel