Pregunta

Ok, tengo esta clase principal llamada enemigo, y dentro de él tengo subclases de diferentes enemigos (es decir, zombieenemy). Necesito una forma de apuntar a todos los sprites/subclases del enemigo. Es decir, para la detección de colisiones, necesito una forma de ver si todos los enemigos están 'muertos' para terminar el nivel.

Gracias

¿Fue útil?

Solución

Hay muchas maneras de hacer esto. Uno es agregar un método a tu clase enemiga como -(BOOL)isEnemy Eso simplemente devuelve sí. (Eso sería más útil si el enemigo tiene una superclase que puedes personalizar, como GameObject. Implementar -isenemia en esa clase para devolver no. De lo contrario, no sabrá si puedes llamar -isenemy en un objeto determinado). Las subclases heredarán automáticamente este método. Alternativamente, puede probar la clase de cada objeto usando -isKindOfClass:. O, dado que eres el que crea enemigos, ciertamente podrías mantener una lista de todos los enemigos activos. Este es probablemente el mejor plan si tienes muchos objetos en la pantalla, solo algunos de los cuales son objetos enemigos.

Decidir cuándo todos los enemigos están muertos es algo que probablemente quieras hacer muy a menudo. Puede tener sentido mantener una lista de enemigos vivos. Cuando un enemigo muera, quítelo de la lista. Puede probar rápidamente si el jugador ha despejado con éxito el nivel verificando la longitud de la lista de enemigos en vivo. Si es mayor que 0, hay más trabajo por hacer.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top