Contenido del Curso
Juego de Lucha en Unity
Juego de Lucha en Unity
Interacción del Jugador con los Objetos
Interfaces
Una interfaz es como un contrato que define un conjunto de métodos y propiedades que una clase debe implementar. Te permite especificar qué funcionalidad debe tener una clase sin proporcionar los detalles de implementación.
Ejemplo
Supongamos que estás creando un juego en Unity y quieres crear diferentes tipos de armas como espadas, pistolas y arcos. Podrías crear una interfaz llamada IWeapon
que describa las acciones básicas que cualquier arma debería poder realizar, como Attack()
y Reload()
.
Ahora, cualquier clase que quiera ser considerada un arma en tu juego debe implementar esta interfaz. Por ejemplo, podrías tener una clase Sword
o una clase Gun
.
Al usar interfaces, puedes asegurarte de que todas tus armas tengan la misma funcionalidad básica (Attack()
y Reload()
), pero cada una puede tener su propia implementación única. Esto hace que tu código sea más modular y más fácil de gestionar, especialmente a medida que tu juego crece en complejidad.
Esta es la interfaz que usamos en nuestro juego para marcar a los enemigos como objetos que podrían ser atacados.
TryGetComponent
Puntos Clave
raycastHit
: Esto se refiere al resultado de un impacto de raycast. Cuando lanzas un rayo en Unity, obtienes información sobre qué objeto;.TryGetComponent(out IGetAttacked getAttacked)
: Este método intenta recuperar un componente específico del transform delGameObject
. La palabra claveout
se utiliza para asignar el componente recuperado a la variablegetAttacked
, si tiene éxito. Si no, ignorará cualquier cosa bajo eseif
;IGetAttacked
: Este es el tipo de interfaz que el código está intentando recuperar delGameObject
. Especifica que elGameObject
debe tener un componente que implemente la interfazIGetAttacked
.
Si el GameObject
impactado por el raycast tiene un componente que implementa la interfaz IGetAttacked
, la variable getAttacked
contendrá una referencia a ese componente después de que esta línea se ejecute. De lo contrario, getAttacked
se asignará un valor de null.
¡Gracias por tus comentarios!