Noticias

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

generador de electricidad

Iniciado por eliasdixon, Agosto 09, 2015, 09:21:30 PM

Tema anterior - Siguiente tema
hola  alguien podria ayudarme con una script, para encender un generador, oseaque en una parte del juego tengas q encender luces con ese generador, yo no tengo mucha idea de script soy novatoasi que si pueden darme una mano se los agradeceria

Agosto 10, 2015, 10:41:09 AM #1 Ultima modificación: Agosto 10, 2015, 10:47:12 AM por Oak Human Flesh
Hay una diferencia entre hacer completamente un script y ayudar a hacer un script.Que parte del código necesitas aprender a hacer? 

Bye Bye



Simplemente hazle un boolean al generador de encendido = true/false y a las luces un getcomponent del script donde hicistes el boolean y un if que se ejecute si el boolean está en true.

Como ha dicho el compañero, basta con hacer depender el encendido de las luces mediante un Trigger colocado en la escena. Por ejemplo, si el personaje toca ese trigger, las luces se encienden.Hay un ejemplo de exactamente eso mismo, en los trainings de Unity, concretamente aquí:https://unity3d.com/es/learn/tutorials/projects/stealth/laser-grids?playlist=17168

gracias, estuve viendo el tutorial ese, y me ayudo el tema es q use los codigos y uno me tira un errorAssets/generador/interaccion.js(4,34): BCE0018: The name 'LastPlayerSighting' does not denote a valid type ('not found').  este es el codigo 
#pragma strict

private var player : GameObject;                                // Reference to the player.
private var lastPlayerSighting : LastPlayerSighting;        // Reference to the global last sighting of the player.


function Awake ()
{
    // Setting up references.
    player = GameObject.FindGameObjectWithTag(Tags.player);
    lastPlayerSighting = GameObject.FindGameObjectWithTag(Tags.gameController).GetComponent(LastPlayerSighting);
}


function OnTriggerStay(other : Collider)
{
    // If the beam is on...
    if(renderer.enabled)
        // ... and if the colliding gameobject is the player...
        if(other.gameObject == player)
            // ... set the last global sighting of the player to the colliding object's position.
            lastPlayerSighting.position = other.transform.position;
}

lo que no entendi bien es si es todo en un mismo script, o bien hago el primer script que seria generadory para las luces otro script apartevar generador : boolean = truevar generador: boolean = falseuna cosa asi?

Ya hace bastante tiempo de este post pero por si no lo has solucionado yo lo que haria seria una array con todas las luces y al hacer la accion que active el generador con un ciclo for encender las luces. Algo asi:
#pragma strict

var luces : GameObject[];

function CambiarLuces (bool estado) {
    for(int i = 0; i < luces.length; i++){
        luces.SetActive(estado);
    }
}

//Para encender las luces usa CambiarLuces(true);
//Para apagar las luces usa CambiarLcues(false);
 Un par de links que te pueden ayudar si no entendiste el scripthttp://docs.unity3d.com/ScriptReference/GameObject.SetActive.html" rel="external nofollow">http://docs.unity3d.com/ScriptReference/GameObject.SetActive.htmlhttp://aprendeenlinea.udea.edu.co/lms/ova/mod/resource/view.php?id=1615" rel="external nofollow">http://aprendeenlinea.udea.edu.co/lms/ova/mod/resource/view.php?id=1615http://answers.unity3d.com/questions/531282/create-custom-function.html Suerte

gracias por la ayuda pero el script tira errores, BCE0043: Unexpected token: true.BCE0044: expecting ;, found 'i'.BCE0043: Unexpected token: ).y no se como solucionarlos la verdad :/cambie el bool por true no se si estara bien, hay cosas q todabia no entiendo mucho perdon... 
pude solucionar 2, solo me quedo el de true
#pragma strict

var luces : GameObject[];

function CambiarLuces(true); {
    for(int.i = 0; i < luces.length; i++){
        luces.SetActive(estado);
    }
}

//Para encender las luces usa CambiarLuces(true);
//Para apagar las luces usa CambiarLcues(false);
 

Agosto 21, 2015, 01:06:31 PM #8 Ultima modificación: Enero 01, 1970, 01:00:00 AM por Antonio
La función, es como una nueva herramienta, cuando la creas, le pones las llaves { } para recoger el contenido, lo que haya dentro de esas llaves, sólo se ejecutará cuando llames la función. En este caso, NO se pone el punto y coma. Después, cuando llames a la función, SÍ se pone el punto y coma.  Así pues, si ves que vas a poner llaves {}, no pongas punto y coma ; , de lo contrario, pues pon el punto y coma ;
Desafortunadamente el true no está bien. José puso 
function CambiarLuces ( bool estado )
Porque es una variable de entrada en la declaración de la función, después, él en las instrucciones que hay en esa función, hace uso de esa variable para encender o apagar las luces. Si tu pones true ahí, el programa no va a saber qué hacer después cuando llegue a esta instrucción:
luces.SetActive(estado);
Porque no va a saber qué es "estado". Cuando José te dice de cambiar el valor de los paréntesis por true o false, se refiere a hacerlo cuando llames la función desde otro lado. Es decir, que poniendo : 
CambiarLuces(true);
o 
CambiarLuces(false);
Llamará a la función que has declarado. Ese CambiarLuces hay que ponerlo en otra función que te haga falta, ejemplo:

 
#pragma strict

var luces : GameObject[];

function Update ()
{
   if (Input.GetKeyDown ("e")) //Al pulsar la tecla e ...
   {
      CambiarLuces (true); //Llamar la función CambiarLuces, y decirle que estado tiene el valor true.
   }
   if (Input.GetKeyDown ("r"))  //Al pulsar la tecla r ...
   {
      CambiarLuces (false); //Llamar la función CambiarLuces, y decirle que estado tiene el valor false.
   }
}

function CambiarLuces (bool estado) //Declaración de la función CambiarLuces
{
    for(int i = 0; i < luces.length; i++) //Bucle que pasa por la lista de bombillas
    {
        luces.SetActive(estado); // Y a cada una, la activa o desactiva dependiendo del valor de estado
    }
}
  

gracias, pero aun me tira estos erroresBCE0043: Unexpected token: estado.BCE0044: expecting ;, found 'i'.BCE0043: Unexpected token: ).

Agosto 21, 2015, 04:01:33 PM #10 Ultima modificación: Enero 01, 1970, 01:00:00 AM por Antonio
En el error, también te tiene que decir en qué linea está el problema, échale un vistazo. También ten en cuenta que los otros errores como el de la i o el paréntesis, pueden ser resultados del primer error, así que aconsejo empezar por ese 1º.

pude solucionar algunos errores, pero algunos persisten,pasa q soy novato y recien arranco con unity y hay cosas simples q todabia ni se
#pragma strict

var luces : GameObject[];

function Update ()
{
   if (Input.GetKeyDown ("e")) //Al pulsar la tecla e ...
   {
      CambiarLuces (true); //Llamar la función CambiarLuces, y decirle que estado tiene el valor true.
   }
   if (Input.GetKeyDown ("r"))  //Al pulsar la tecla r ...
   {
      CambiarLuces (false); //Llamar la función CambiarLuces, y decirle que estado tiene el valor false.
   }
}

function CambiarLuces(bool,estado) //Declaración de la función CambiarLuces
{
    for (int i = 0; i <luces.length;i++) //Bucle que pasa por la lista de bombillas
    {
        luces.SetActive(estado); // Y a cada una, la activa o desactiva dependiendo del valor de estado
    }
}
BCE0043: Unexpected token: ).BCE0044: expecting ;, found 'i'. 

Agosto 21, 2015, 11:44:33 PM #12 Ultima modificación: Agosto 21, 2015, 11:44:58 PM por Antonio
function CambiarLuces(bool,estado) //Declaración de la función CambiarLuces
¿esa coma de dónde ha salido?

Agosto 22, 2015, 06:23:27 PM #13 Ultima modificación: Agosto 22, 2015, 06:23:54 PM por Jose134
Cita de: eliasdixon date=1440127234" data-ipsquote="" data-cite="eliasdixon" class="ipsQuote">gracias por la ayuda #pragmavar luces : GameObject[];

function CambiarLuces(true); {
    for(int.i = 0; i < luces.length; i++){
        luces[i].SetActive(estado);
    }
}

//Para encender las luces usa CambiarLuces(true);
//Para apagar las luces usa CambiarLcues(false); 
Ups la costumbre de usar C# xD
#pragma strict

var luces : GameObject[];

function CambiarLuces (estado : bool) {
    for(var i : int = 0; i < luces.length; i++){
        luces.SetActive(estado);
    }
}
Con eso ya no deberias tener errores

me tira solo un error BCE0018: The name 'bool' does not denote a valid type ('not found'). Did you mean 'UnityStandardAssets.Vehicles.Ball.Ball'? 

Etiquetas: