Unity Spain

Post Antiguos => General (Antiguo) => Mensaje iniciado por: Centauro5legs en Julio 11, 2015, 03:04:17 AM

Título: Scrip para cambiar un GameObject por otro
Publicado por: Centauro5legs en Julio 11, 2015, 03:04:17 AM
Tengo un arreglo de gameObject y quiero cambiar un GameObject que tengo en mi codigo, por uno de mi lista. Mi función esta más o menos así;
 

using UnityEngine;
using System.Collections;
         public class EditPlayer: MonoBehaviour {
 
         public gameObject [] Objetos;
 
         public void cambiarobject (int indice){
 
                 Objeto = gameObject.Find("modelo");
                 Objeto = Objetos [indice];
         }
}

 
 
 
Pero obviamente no me funciona, alguien me puede decir porque? (% el arreglo de gameObject's lo cargo en la interfaz gráfica del Unity)
Título: Scrip para cambiar un GameObject por otro
Publicado por: GSG3D en Julio 11, 2015, 03:27:05 AM
Que quieres cambiar o instanciar un gameObject?
Porque ahi estas asignando valores a Objeto dos veces.
Título: Scrip para cambiar un GameObject por otro
Publicado por: Centauro5legs en Julio 11, 2015, 03:40:31 AM
El chiste es que quiero que mi personaje se cambia la armadura, en este caso tengo una lista de GameObject's con todos los Modelos con los que cuenta mi juego, este Scrip es para cambiarlos
Título: Scrip para cambiar un GameObject por otro
Publicado por: GSG3D en Julio 11, 2015, 03:45:07 AM
Entonces ese no es el camino, primeramente deberias destruir/ocultar el objeto que quieres remplazar y luego instanciar/mostrar el objeto que quieras poner.
En youtube hay muchos tutoriales de esto, echale una visita
Título: Scrip para cambiar un GameObject por otro
Publicado por: ProgramacionWH en Julio 11, 2015, 04:18:26 PM
Te lo escribo en PseudoCodigo varias cosillas sueltas como dice @GSG3D (http://unityspain.com/profile/23667-gsg3d/)

variable ArmaduraActual = Crear(ArmaduraInicial...)
funcion cambiarArmadura(Armadura){
Destruir(ArmaduraActual);
ArmaduraActual = Crear(Armadura);
}
Título: Scrip para cambiar un GameObject por otro
Publicado por: Centauro5legs en Julio 12, 2015, 01:26:36 AM
De hecho si pude, un amigo del trabajo me ayudo con el código y quedo así;
 

using UnityEngine;
using System.Collections;
         public class EditPlayer: MonoBehaviour {
 
         public gameObject [] Mayas;
         public gameObject Maya;
         public string Objeto;
 
         public void ChangedModel (int indice)
         {
                  Maya = GameObject.Find (Objeto);
                  Maya = (GameObject)Instantiate (Mayas [indice], transform.position, transform.rotation);
                  Maya.transform.parent = GameObject.Find ("Body").transform;
                  Maya.transform.localPosition = Mayas [indice].transform.localPosition;
                  Maya.transform.localRotation = Mayas [indice].transform.localRotation;
                  Maya.transform.localScale = Mayas [indice].transform.localScale;
                  Destroy (GameObject.Find (Objeto));
                  Maya.name = Objeto;
         }
}