nomoregames 35 Report post Posted May 14, 2020 Buenas tardes No sabría explicar por que ocurre lo siguiente, así que intentare explicar mi situación de la forma mas compresible posible Estoy haciendo arboles que, al ser golpeados se caen, pero con efecto pixel... Tengo un árbol formado por un conjunto de cubos, los cubos visibles están anidados dentro de un cubo puesto exactamente en la misma posición, solo que estos son objetos vacíos Los cubos padres son invisibles Cada uno de estos cubos visibles, tiene en su interior el siguiente script GameObject Padre; void Start() { Padre = gameObject.transform.parent.gameObject; } void Update() { var vec = transform.eulerAngles; vec.x = Mathf.Round(vec.x / 90) * 90; vec.y = Mathf.Round(vec.y / 90) * 90; vec.z = Mathf.Round(vec.z / 90) * 90; transform.eulerAngles = vec; transform.position = new Vector3(Mathf.RoundToInt (Padre.transform.position.x), Mathf.RoundToInt(Padre.transform.position.y), Mathf.RoundToInt(Padre.transform.position.z)); } Que básicamente lo que hace es tomar como referencia a su padre para redondear la posición de este y lograr el efecto pixelado Bien... Para controlar el estado de el árbol, su vida y como caer tengo el siguiente script anidado en el objeto Tronco que aparece en la imagen de las jerarquías static float TreeLive = 5; GameObject TreeMoveController; static private bool FinalizarComprobaciones = false; private void Start() { TreeLive = 5; TreeMoveController = gameObject.transform.parent.transform.parent.gameObject; } public void ReciveDamage(float Damage) { TreeLive -= Damage; } private void Update() { if (TreeLive <= 0 && FinalizarComprobaciones == false) { TreeMoveController.transform.rotation = Quaternion.RotateTowards(TreeMoveController.transform.rotation, new Quaternion(0.67f, 0.4f, -0.4f, 0.67f), 0.4f); if (TreeMoveController.transform.rotation == new Quaternion(0.4f, 0.5f, -0.5f, 0.4f)) { FinalizarComprobaciones = true; } } } Cuando la vida es 0 o menos el árbol cae. El problema viene cuando instancio mas de uno en la escena, pues en el momento que le resto la vida a uno de ellos hasta el 0 y este cae, todos los otros arboles caen Algo similar me ocurre con unos enemigos, cuando los duplico y la vida de uno de ellos es 0, los dos mueren... Puede tener algo que ver la forma en la que les resto la vida? RaycastHit hit; if (Physics.Raycast(transform.position, transform.forward, out hit, 1f)) { hit.transform.gameObject.SendMessage("ReciveDamage", SwordDamage); } Si he añadido tanta info a el post es por que no he logrado encontrar por donde esta el error... Gracias por la paciencia Share this post Link to post Share on other sites
francoe1 536 Report post Posted May 15, 2020 El problema es simple. Un campo o propiedad estático no se instancia, por lo cual estas utilizando el campo TreeLive para todas las instancias. Share this post Link to post Share on other sites
nomoregames 35 Report post Posted May 15, 2020 Y como lo solucionaría? Share this post Link to post Share on other sites
francoe1 536 Report post Posted May 15, 2020 Evitando utilizar la palabra reservada "static". Share this post Link to post Share on other sites
nomoregames 35 Report post Posted May 15, 2020 Como no se me había ocurrido 😱 Pero.... entonces, como puedo hacer que esa variable (vidas) no combine al pasar de una escena a otra? Share this post Link to post Share on other sites
francoe1 536 Report post Posted May 15, 2020 En este caso la solución puede ser más complicada de explicar, escribiré un blog con la explicación. Share this post Link to post Share on other sites
nomoregames 35 Report post Posted May 15, 2020 (edited) Muchas gracias! estaré al tanto Pero... no se podría hacer algo así como un script externo, en el que se fueran guardando todas las vidas, y hacer que este si que fuera static... pregunto por que nunca he hecho algo así Edited May 15, 2020 by nomoregames Share this post Link to post Share on other sites
francoe1 536 Report post Posted May 15, 2020 En este tipo de casos, como en tantos otros se suele implementar algo que se conoce como "state management pattern" (Gestión de patrón de estado). Explicarte todo sería bastante complicado y extenso, por eso deberias esperar a que escriba el blog, seguramente esta noche o mañana por la mañana (hora ARG) lo tenga publicado. Share this post Link to post Share on other sites
lightbug 837 Report post Posted May 16, 2020 On 5/14/2020 at 2:46 PM, nomoregames said: new Quaternion(0.67f, 0.4f, -0.4f, 0.67f), 0.4f); Guat!! 3 Share this post Link to post Share on other sites
nomoregames 35 Report post Posted May 16, 2020 @lightbug 2 Share this post Link to post Share on other sites