Noticias

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

Mi script no funciona

Iniciado por Nontre, Marzo 12, 2016, 01:10:00 PM

Tema anterior - Siguiente tema
Se que me estoy poniendo un poco pesado pero no entiendo porque mi script no funcinaNo me sale error ni nada, sencillamente no funciona:
#pragma strict
var Lado = 0;
private var Puedo = false;
var Cubo1 : GameObject;
var Cubo2 : GameObject;
var Cubo3 : GameObject;
var Cubo4 : GameObject;
var Cubo5 : GameObject;
public var Cubo : GameObject;



function Update()
{
if(Input.GetKeyDown(KeyCode.Alpha1))
{
   Cubo = Cubo1;
   print ("Cubo1 seleccionado");
}
if(Input.GetKeyDown(KeyCode.Alpha2))
{
   Cubo = Cubo2;
   print ("Cubo2 seleccionado");
}
if(Input.GetKeyDown(KeyCode.Alpha3))
{
   Cubo = Cubo3;
   print ("Cubo3 seleccionado");
   }
if(Input.GetKeyDown(KeyCode.Alpha4))
{
   Cubo = Cubo4;
   print ("Cubo4 seleccionado");
}
if(Input.GetKeyDown(KeyCode.Alpha5))
{
   Cubo = Cubo5;
   print ("Cubo5 seleccionado");
}
}
  if(Input.GetKeyDown(KeyCode.Mouse0))
  {
    if(Puedo)
    {
      Construir();
    }
  }
 
  if(Input.GetKeyDown(KeyCode.Mouse1))
  {
    if(Puedo)
    {
      Destruir();
    }
  }
function OnMouseEnter()
{
  Puedo = true;
}

function OnMouseExit()
{
  Puedo = false;
}

function Construir()
{
  //Arriba
  if(Lado == 1)
  {
    var Clon1 = Instantiate(Cubo, Cubo.transform.position, Cubo.transform.rotation);
    Clon1.transform.position.y += 1;
  }
  //Izquierda
  if(Lado == 2)
  {
    var Clon2 = Instantiate(Cubo, Cubo.transform.position, Cubo.transform.rotation);
    Clon2.transform.position.x -= 1;
  }
  //Derecha
  if(Lado == 3)
  {
    var Clon3 = Instantiate(Cubo, Cubo.transform.position, Cubo.transform.rotation);
    Clon3.transform.position.x += 1;
  }
  //Adelante
  if(Lado == 4)
  {
    var Clon4 = Instantiate(Cubo, Cubo.transform.position, Cubo.transform.rotation);
    Clon4.transform.position.z += 1;
  }
  //Atras
  if(Lado == 5)
  {
    var Clon5 = Instantiate(Cubo, Cubo.transform.position, Cubo.transform.rotation);
    Clon5.transform.position.z -= 1;
  }
  //Abajo
  if(Lado == 6)
  {
    var Clon6 = Instantiate(Cubo, Cubo.transform.position, Cubo.transform.rotation);
    Clon6.transform.position.y -= 1;
  }
}

function Destruir()
{
  Destroy(Cubo.gameObject);
}
 

La variable 'Puedo' sólo es true cuando es ratón está sobre el objeto que tiene el script, si intentas construir en cualquier otro punto del mapa la variable 'Puedo' será false, entonces si el script lo lleva un lado, sólo funcionará cuando el mouse esté sobre el lado, si es un cubo, sobre el cubo.

si , precisamente es para eso pero al pulsar sobre un lado o un cubo con el script, no aparece ningún objeto nuevo ese es el problema cuando el ratón está sobre un cubo con el script, la variable "puedo" debería de cambiar a true pero no hace nada, no aparece ningún objeto nuevo al pulsar sobre este.

Y la variable lado cambia en algún momento de 0 a 1-6?

te refieres a que si la variable Cubo cambia a Cubo1, Cubo2, Cubo3...? 
perdona  la variable lado no cambia pero no tiene porque cambiar

antes de seguir leyendo, advertencia importante : nunca hay que tomarse a mal los consejos, siempre puedes tomarlos o dejarlos teniendo en cuenta la anterior advertencia, aprende como minimo lo mas basico de programacion ... en el momento que he visto condicionales fuera de cualquier funcion, me han estallado los ojos y no he podido seguir leyendo el script.Que minimo que tener unos guantes para meterse al cuadrilatero ...

la varible lado solamente sirve para diferenciar entre las posiciones del cubo que están ya asignadas 
Entiendo...

Jajajajajajajaja no me había fijado en que los if() estaban fuera del Update()De todas formas, si la función Construir() es la que instancia los nuevos objetos, y dentro hay una condición que sólo se cumple cuando lado es 1-6, si siempre es 0 en qué condición entrará??

Ya esta solucionado gracias, me había hecho la pixa un lío al abrir y cerrar las llaves de las funciones. GRACIAS
Ahora mismo tengo un problema distinto... y es que al tener seleccionado por ejemplo el CUBO1 y clico sobre el Cubo2, el Cubo 1 aparece junto al Cubo 1 y no junto al cubo que he clicado que seria el Cubo 2
De esta manera al hacer click sobre cualquier lado del cubo2 siempre aparecera en el mismo lado correspondiente al Cubo1 y de esta manera se fusionan los cubos

Como decia, eres libre de tomar o dejar los consejos que te den ... pero por la experiencia en otros usuarios que hacian lo mismo, cuando alguien se dedica a preguntar una duda tras otra sin dar señales que ha intentado resolverlo primero o esforzarse en aprender, la gente suele dejar de resolver sus dudas (tambien es comprensible que eso suceda).Hace unos minutos te aconsejaba aprender lo mas basico de programacion porque tenias un error garrafal en el codigo ... ahora, a parte de programacion, te aconsejaria aprender logica (que es tan o mas importante que saber programacion) para entender lo que hace un codigo que se supone no tiene errores pero no actua como esperas. Si aparece junto al cubo que tienes seleccionado en lugar del cubo al que has hecho clic es porque tu le estas diciendo que haga eso. Suerte.

Gracias supongo que si debería aprender lo básico para esto. Lo intentaré

Etiquetas: