Notice: This page requires JavaScript to function properly.
Please enable JavaScript in your browser settings or update your browser.
Aprende Interacción del Jugador con Objetos | Comportamiento del Jugador
Juego de Lucha en Unity

bookInteracción del Jugador con Objetos

Interfaces

Una interfaz es como un contrato que define un conjunto de métodos y propiedades que una clase debe implementar. Permite especificar qué funcionalidades debe tener una clase sin proporcionar los detalles de implementación.

Ejemplo

Supongamos que estás desarrollando un juego en Unity y deseas 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 debe poder realizar, como Attack() y Reload().

Ahora, cualquier clase que desee ser considerada un arma en tu juego debe implementar esta interfaz. Por ejemplo, podrías tener una clase Sword o una clase Gun.

Al utilizar interfaces, puedes asegurar 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 fácil de gestionar, especialmente a medida que tu juego crece en complejidad.

Esta es la interfaz que utilizamos en nuestro juego para marcar a los enemigos como objetos que pueden ser atacados.

public interface IGetAttacked
{
    public void GetAttacked(int damage);
}

TryGetComponent

if (rayCastHit.transform.TryGetComponent(out IGetAttacked getAttacked))
{
    getAttacked.GetAttacked(damage);
    attackEffect.transform.position = rayCastHit.point;
    attackEffect.Play();
    isAttacking = false;
}

Puntos clave

  • raycastHit: Se refiere al resultado de un impacto de raycast. Al lanzar un rayo en Unity, se obtiene información sobre el objeto impactado;
  • .TryGetComponent(out IGetAttacked getAttacked): Este método intenta obtener un componente específico del transform del GameObject. La palabra clave out se utiliza para asignar el componente recuperado a la variable getAttacked, si tiene éxito. Si no, se ignora cualquier cosa dentro de ese if;
  • IGetAttacked: Este es el tipo de interfaz que el código intenta obtener del GameObject. Especifica que el GameObject debe tener un componente que implemente la interfaz IGetAttacked.

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 ejecutar esta línea. De lo contrario, a getAttacked se le asignará un valor nulo.

question mark

¿Cuál es el propósito del método TryGetComponent en Unity?

Select the correct answer

¿Todo estuvo claro?

¿Cómo podemos mejorarlo?

¡Gracias por tus comentarios!

Sección 2. Capítulo 5

Pregunte a AI

expand

Pregunte a AI

ChatGPT

Pregunte lo que quiera o pruebe una de las preguntas sugeridas para comenzar nuestra charla

Awesome!

Completion rate improved to 3.33

bookInteracción del Jugador con Objetos

Desliza para mostrar el menú

Interfaces

Una interfaz es como un contrato que define un conjunto de métodos y propiedades que una clase debe implementar. Permite especificar qué funcionalidades debe tener una clase sin proporcionar los detalles de implementación.

Ejemplo

Supongamos que estás desarrollando un juego en Unity y deseas 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 debe poder realizar, como Attack() y Reload().

Ahora, cualquier clase que desee ser considerada un arma en tu juego debe implementar esta interfaz. Por ejemplo, podrías tener una clase Sword o una clase Gun.

Al utilizar interfaces, puedes asegurar 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 fácil de gestionar, especialmente a medida que tu juego crece en complejidad.

Esta es la interfaz que utilizamos en nuestro juego para marcar a los enemigos como objetos que pueden ser atacados.

public interface IGetAttacked
{
    public void GetAttacked(int damage);
}

TryGetComponent

if (rayCastHit.transform.TryGetComponent(out IGetAttacked getAttacked))
{
    getAttacked.GetAttacked(damage);
    attackEffect.transform.position = rayCastHit.point;
    attackEffect.Play();
    isAttacking = false;
}

Puntos clave

  • raycastHit: Se refiere al resultado de un impacto de raycast. Al lanzar un rayo en Unity, se obtiene información sobre el objeto impactado;
  • .TryGetComponent(out IGetAttacked getAttacked): Este método intenta obtener un componente específico del transform del GameObject. La palabra clave out se utiliza para asignar el componente recuperado a la variable getAttacked, si tiene éxito. Si no, se ignora cualquier cosa dentro de ese if;
  • IGetAttacked: Este es el tipo de interfaz que el código intenta obtener del GameObject. Especifica que el GameObject debe tener un componente que implemente la interfaz IGetAttacked.

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 ejecutar esta línea. De lo contrario, a getAttacked se le asignará un valor nulo.

question mark

¿Cuál es el propósito del método TryGetComponent en Unity?

Select the correct answer

¿Todo estuvo claro?

¿Cómo podemos mejorarlo?

¡Gracias por tus comentarios!

Sección 2. Capítulo 5
some-alt