Noticias

¡RECUERDA QUE SI ERES UN NUEVO USUARIO, DEBES PRESENTARTE PARA PODER PUBLICAR MENSAJES! | TENEMOS CANAL OFICIAL DE TELEGRAM: t.me/unity3dspain

Temas recientes

Ayuda con el planteamiento de mi juego.

Iniciado por pronick, Octubre 27, 2019, 06:48:26 PM

Tema anterior - Siguiente tema
Buenas compañeros,
 
Estoy haciendo un juego de coches. Como estructura he usado algo similar al tutorial de los tanques:
 
GameManager y dentro un array de GO checkpoints y otro array de la clase CarManager y dentro de cada uno de estos una instancia de un objeto car. 
 
Actualmente me he quedado atascado porque cuando un coche colisiona con un checkpoint, salta el evento de ese checkpoint, pero lo que me da es el collider del coche y con él no puedo nada más que identificar el objeto car, no al carManager que es su padre, este se lo mando al GM y no puedo hacer bien la lógica que quiero, de activa y desactivar checkpoints y que cada coche lleve un contador de los checkpoints activos por los que ha pasado, cual es el siguiente y todo eso. 
 
Tengo dos preguntas:
 
1. Suponiendo que la estructura que estoy usando fuese la correcta o al menos que no estuviera mal. Como recupero el CarManager conociendo solo la instancia del coche que lleva dentro.
 
2. En caso de que la estructura y planteamiento fuera un desastre. Podríais sugerirme una estructura más correcta y un planteamiento para los checkpoints más acertado.
 
 
 
 

El CarManager que gestione las colisiones de los cars con los checkpoints y que envíe un evento con la class CarManager y el car. El GameManager que se suscriba a este evento y recibirá los dos tipos de class.

Gracias por la respuesta @iRobb
 
Pregunto desde el desconocimiento, siendo el car el que tiene el box collider, entiendo que el CarManager puede y ha de detectar esa colisión para poder gestionar lo que tu me comentas, es correcto eso? digo esto, porque cada CarManager tiene su car.
 
Te estoy muy agradecido y aliviado a la vez al saber que el planteamiento general que yo tengo no estaría mal del todo, solo tendría que detectar el evento de colisión en el CarManager en lugar de donde está ahora que es el checkPoint y hacer llegar la info (parámetros) del checkpoint y Carmanager involucrados al GameManager. (tendré que mirar como se gestionan eventos y suscripciones)
 
Si que es cierto que como comentas tiene mucho más sentido que como lo hacía yo, pero cuando nunca he abordado problemas similares y con mi desconocimiento profundo de Unity, me cuesta abstraerme para ver el flujo con perspectiva.
 
Nuevamente, muchas gracias.

La detección la reciben los componentes (y su script) que estén en el mismo gameobject que el collider, con el OnCollision y sus variantes. Ahora bien, puedes generarte un evento en el script que acompaña al collider y que otros scripts fuera de ese gameobject reciban el evento. De este modo si tienes un manager, por ejemplo CarManagers en plural, que reciba todos los eventos de todas las colisiones y las pueda gestionar de forma conjunta y única.
 
Y yo agradecido de ayudarte.

Etiquetas: