Unity Spain

Post Antiguos => General (Antiguo) => Mensaje iniciado por: eduak en Septiembre 26, 2015, 07:16:41 PM

Título: No puedo crear objetos sucesivos
Publicado por: eduak en Septiembre 26, 2015, 07:16:41 PM
Hola que tal, Tengo un problema con los objectos intento hacer que se generen 3 objectos aleatorios y que cada 1 dependan del otro es decir que no se genero el otro sin haber recogido el primero pero no se como hacerlo, me podrían ayudar ESTE ES EL SCRIPTS#pragma strict
var posicion : Transform[]; //posicion del spawn
var pista    : GameObject[];    // objecto que spawn
var personaje : GameObject[]; //objecto  que empiza la mision
var hablando : boolean = false;  // validar para hablar
var cerrarMision : boolean = false;  // validar para no crear mas la mision
var Tiporuta : int =0; //ramdon de ruta     function Start () {
Tiporuta= Random.Range(0, 3);
}function Update () { if (hablando  == true) {     
 if(Input.GetKeyDown (KeyCode.X)){
    hablando=false; 
     Spawn();
     
                     
 }
}}
function OnTriggerEnter( personaje: Collider){    
       if (hablando == false){
          hablando  = true;          
      }    }
function OnGUI(){     if(hablando){ 
    Screen.showCursor = true; 
    GUI.Box(new Rect(0,0,Screen.width,Screen.height)," "); 
    GUI.backgroundColor = Color.red; 
     
    GUI.Box(Rect(Screen.width/2,(Screen.height/2)-150,300,100),"TUTOR VIRTUAL: \n \n Hola, Como estas. Bienvenido a la escuela \n \n presione X para salir");      
       } 
    }
    
function Spawn(){ 
if(Tiporuta ==0){
    for (var i=0; i<3; i++){
      var obj : GameObject = pista[0];
       var pos: Transform = posicion;  
      Instantiate(obj, pos.position, pos.rotation); 
    }}else{
if(Tiporuta ==1){
 for (var k=3; k<6; k++){    
      var obj2 : GameObject = pista[0];
       var pos2: Transform = posicion[k];  
      Instantiate(obj2, pos2.position, pos2.rotation); 
    }
}else{
if(Tiporuta ==2){
 for (var y=6; y<9; y++){    
      var obj3 : GameObject = pista[0];
       var pos3: Transform = posicion[y];  
      Instantiate(obj3, pos3.position, pos3.rotation); 
    }}}
    }
    
    }
Título: No puedo crear objetos sucesivos
Publicado por: Oak Human Flesh en Septiembre 26, 2015, 09:06:16 PM
Entiendo que quieres recoger cualquiera de los tres, luego los otros seran instanciados cuando presiones la tecla X, esto último depende de si colisionas cualquier objeto con isTigger activado?.O intentas recoger primero los tres? Luego cuando colisines con cualquier objeto con isTrigger activado, habilitar la tecla X para que se instancien aleatoriamente cualquiera de los tres? Y estos tomen posiciones y rotaciones diferentes según su especie?
Título: No puedo crear objetos sucesivos
Publicado por: eduak en Septiembre 26, 2015, 09:29:08 PM
HOLA gracias por responder =).SI mira lo que hace hay es que cuando preciona X se van a generar 3 objectos aleatorios, hasta hay va bien los genera los 3 el problema esta es que esos 3 objectos que genera los genera al mismo tiempo y quiero que genere sucesivamente cuando el anterior lo destruyas..Por ejemplo  creo    var obj3 : GameObject = pista[0];
       var pos3: Transform = posicion[0];   Instantiate(obj3, pos3.position, pos3.rotation); y cuando ese objecto lo colicione genere este   var obj3 : GameObject = pista[0]; var pos3: Transform = posicion[1];          Instantiate(obj3, pos3.position, pos3.rotation);    Este es el scripts  del objecto que crea.#pragma strict
var CharacterJason : GameObject;
var vidabotiquin : float = 100;
var muerto : boolean = false;
static var numeroNotas : int =0;
function Start () {}function Update () {
numeroNotas +=1;
if(vidabotiquin <= 0){
muerto = true;}if (muerto == true){
cansancio.salud += 30;
Destroy (this.gameObject,0.1);
}}// EFECTO DEL BOTIQUINfunction OnTriggerEnter( CharacterJason : Collider){
vidabotiquin -= 100;}
Título: No puedo crear objetos sucesivos
Publicado por: Oak Human Flesh en Septiembre 27, 2015, 02:11:52 AM
??? entonces quieres que aparezca solo un objeto de los tres cuando presionas el botón o cuando colisiones con el????using UnityEngine;
using System.Collections;

public class GameManager : MonoBehaviour {
public GameObject[] objetos = new GameObject[3];
public Transform[] posiciones = new Transform[4];
public GameObject clon;
public int cantidadObjetos = 0;
// Update is called once per frame
void Update () {
   if (!clon) {
      if (Input.GetButtonDown ("Fire1"))
      {
         InstanciaObjetosAleatoriamente ();
      }
   }
   else
   {
      if (Input.GetButtonDown("Fire2"))
      {
         DestruyeObjetos ();
      }
   }
}
public void InstanciaObjetosAleatoriamente ()
{
   if (clon)
   {
      DestruyeObjetos ();
      int i = Random.Range (0, objetos.Length - 1);
      int j = Random.Range (0, posiciones.Length - 1);
      clon = Instantiate (objetos , posiciones [j].position, posiciones [j].rotation) as GameObject;
      cantidadObjetos++;
   }
   else{
      int i = Random.Range (0, objetos.Length - 1);
      int j = Random.Range (0, posiciones.Length - 1);
      clon = Instantiate (objetos , posiciones [j].position, posiciones [j].rotation) as GameObject;
      cantidadObjetos++;
   }
}
public void DestruyeObjetos ()
{
   Destroy (clon);
   cantidadObjetos--;
}
}entonces puedo llamar esos métodos desde cualquier script, por ejemplo este (sin importar si se trata de JavaScript enviando un mensaje a un método en C#)
var velocidad = 1f;
var fuerza = 100f;
var rigbdy : Rigidbody;
var gameManager : GameObject;
function Start ()
{
rigbdy = GetComponent(Rigidbody);
}
function FixedUpdate ()
{
if(Input.GetButton("Vertical") || Input.GetButton("Horizontal"))
{
   rigbdy.AddRelativeForce(Input.GetAxis("Horizontal")*transform.right*Time.fixedDeltaTime*fuerza +
                     Input.GetAxis("Vertical")*transform.forward*Time.fixedDeltaTime*fuerza);
}
velocidad = rigbdy.velocity.magnitude;
   
}
function OnCollisionEnter (collision: Collision)
{
    for (var contact : ContactPoint in collision.contacts)
    {
       if(contact.otherCollider.gameObject.CompareTag("objetos"))
       {
      gameManager.SendMessage("DestruyeObjetos");
      gameManager.SendMessage("InstanciaObjetosAleatoriamente");
   }
   
}

}
entonces, es así?
Título: No puedo crear objetos sucesivos
Publicado por: kaito en Septiembre 27, 2015, 11:45:46 AM
[quote author=eduak" data-ipsquote-contapp="forums" data-ipsquote-contenttype="forums" data-ipsquote-contentclass="forums_Topic" data-ipsquote-contentid="26745" data-ipsquote-contentcommentid="113841">Hola que tal, Tengo un problema con los objectos intento hacer que se generen 3 objectos aleatorios y que cada 1 dependan del otro es decir que no se genero el otro sin haber recogido el primero pero no se como hacerlo, me podrían ayudar [/quote]Lo más sencillo sería cambiar de posicion un solo objeto cada vez que entra en contacto con el player. Este sería el script del Item: 

      this.index++;

      if(this.index < this.posiciones.Length){

         this.transform.position = this.posiciones[this.index];

      } else Destroy(this.gameObject);

   }

}

}
 Tan solo tendrías que instanciar-crear un solo GameObject. Por ejemplo, este sería el script donde se crea el item(único) y le pasamos las posiciones. 
using UnityEngine;
using System.Collections;

public class controlPlayer : MonoBehaviour {

public Vector3[] posiciones;
public GameObject prefab;

void Update(){

   if(Input.GetKeyDown(KeyCode.Return)){   

      itemScript script = Instantiate<GameObject>(this.prefab).GetComponent<itemScript>();
      script.posiciones = this.posiciones;

   }



}

}
 
Título: No puedo crear objetos sucesivos
Publicado por: eduak en Septiembre 28, 2015, 01:10:22 AM
Hola muchas gracias por responder y sus ayuda. Bueno estaré analizando el código y verificare a ver si lo solucionó ya que ahora estoy ocupado.. me ayudaron mucho pensé que en este foro se respondía muy tarde pero me doy cuenta que no es así ..Gracias. 
Título: No puedo crear objetos sucesivos
Publicado por: eduak en Septiembre 29, 2015, 12:52:29 AM
Hola  analizando el script me confundí un poco ya que era c# pero me dieron una idea  para investigarlo en Internet, y a si fue lo pude conseguir.Lo que hice fue crear 3 scripts uno para llevar el control de las pistas recogidas obtenidas  este va en el player ///////////////////////////////////////////////////////////////////////////////////////////////////////////////////
public static var pista : int =0;
function OnTriggerEnter( other: Collider){    
 if(other.gameObject.tag=="pista"){
        Destroy(other.gameObject);
        pista ++;
 }
  
  }////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////otro que va en el objecto que va tener la mision///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////var mensaje : String;
var mensaje2 : String;
var mensaje3 : String;
var entro : boolean = false;
var intermedio : boolean = false;
var fin : boolean = false;
public static var Acepto : boolean = false;function Start(){
mensaje="BIENVENIDO GRAN INVESTIGADOR!"+"\nPara empezar nuestra aventura como investigador debes observar bien."+"\n todo investigador sabe observar así que tu no debes quedarte atrás"+"\n vamos ve y buscar 3 pistas ante de que tu enemigo las consiga!"+"\n Presiona "+"X"+" para salir" ;
mensaje2 ="Felizidades Ganaste!!!!";
mensaje3="Aun no las has completado apurate el enemigo lo hace!!";
}function Update () {
       if(Input.GetKeyDown(KeyCode.X)&& Acepto==false){       
          entro=false;
           Acepto = true;
   }else{
       if(Input.GetKeyDown(KeyCode.Z)){
        
           fin=false;
           intermedio=false;
       }
   
   
   
  }}
function OnGUI() {
   if(Acepto){
   GUILayout.Label(" Pistas = "+BOTIQUIN.pista);
   }
    if(entro){
        GUI.Box(new Rect(10,10,500,90), mensaje);
        
      
    }
     if(fin){
       GUI.Box(new Rect(10,10,500,90), mensaje2);
          Destroy(this.gameObject,3f);
     }
     
          if(intermedio){
       GUI.Box(new Rect(10,10,500,90), mensaje3);     }
     
        
     
}
    function OnTriggerEnter(other: Collider){
        if(other.gameObject.tag == "Player" && BOTIQUIN.pista==0){
        entro = true;
        }else{
             if(BOTIQUIN.pista==3){
                fin = true;
              
             }else{
             
                intermedio =true;
             }
        
        }
    }//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////Y otro que también va tener el objecto que va a crear la misión pero creara los objecto o pistas aleatorios////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////#pragma strict
    var pista : GameObject;
     var pista2 : GameObject;
      var pista3: GameObject;
       var ranx : int =0;
      
function Start () {
 ranx = Random.Range(0,100);
  
}function Update () {
 if(Empezar_mision.Acepto ==true && BOTIQUIN.pista ==0){
       pista.transform.position=Vector3(1135.46+ranx,0.99,1262.4+ranx);

      }else{
        if(BOTIQUIN.pista ==1){
       pista2.transform.position=Vector3(1113.29+ranx,0.99,1262.4+ranx);
       }else{
       if(BOTIQUIN.pista==2){
         pista3.transform.position=Vector3(1097.33+ranx,0.99,1278.9+ranx);
         }
    }}
    
}    /////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// gracias por su ayuda.