Noticias

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

problema con script de nitro

Iniciado por zopas tv, Octubre 26, 2017, 04:17:24 PM

Tema anterior - Siguiente tema
hola buenas a todos!!!
 
Mi problema es que llevo ya varios dias intentando hacer que se incremente la velocidad del coche (lo he hecho pero seguir leyendo) pero le he asignado el boton Fire1 para incrementarla pero no funciona. 
 
por aqui dejo el script
 

if (Input.GetButtonDown ("Fire1")) {
      VelocidadNormal = 30f;
 
   }      
// esta parte es para que deje de correr
   if (Input.GetButtonDown ("Fire2")) {
      VelocidadNormal = 10f;
   }

 
 

Pero en que contexto esta puesto esto? si solamente estas modificando un simple float no va a suceder nada, estás asignando "VelocidadNormal" a una velocidad no?

GetButtonDown solo "funciona" (devuelve true) justo en el momento de pulsar la tecla....
 
GetButton devuelve true cuna esta la tecla pulsada(mantenida)
 
GetButtonUp devuelve true justo cuando sueltas la tecla...
 
 
 
segun lo que tienes puesto deveria funcionar asi:
 
si pulsa fire1 la velocidad es 30 y si pilsas fire2 la velocidad es 10
 
 
 
...no se como lo quieres hacer.... si quieres que al pulsar haga "turbo" durante unos segundos...
 
o si quieres que haga "turbo" mientras mantengas pulsado...
 
 
 
 
 
la segunda opcion seria cambiar los "GetButtonDown" por  "GetButton"
 
puede ser lo que dice @lightbug

Octubre 26, 2017, 10:18:23 PM #3 Ultima modificación: Octubre 26, 2017, 10:19:14 PM por Arthure
hola @zopas tv,
 
siento comunicarte que tu problema no es con el sistema de oxido nitroso del coche, y tampoco con la velocidad ... por lo menos con la velocidad del coche; el problema mas preocupante aqui es la velocidad de trabajo si es cierto que llevas varios dias intentando hacer que se incremente la velocidad del coche, y en ese periodo de tiempo lo maximo que has hecho ha sido un script que contiene dos condicionales. Por lo tanto me atreveria a decir que :
 


  •    como he comentado, tienes un problema a la hora de programar ...


  •    ... o te tiras un farol con eso de que llevas dias y solo has puesto dos condicionales hechos en un momento, esperando que se te haga todo desde cero (lo que has puesto y nada es lo mismo) ...


  •    ... o tienes un script mucho mas currado que eso pero te da miedo enseñarlo por si alguna mala persona del foro te roba el codigo y se aprovecha de tu trabajo, con lo que es sumamente dificil ayudarte (por no decir imposible).


ya nos contaras que opcion es la correcta,
 
un cordial saludo

llevo dias intentandolo, no he hecho unicamente ese script, si no que he realizado mas(unicamente que no los he guardo por que no me funcionaban.
 
para el punto que aportas:
 


  •    como he comentado, tienes un problema a la hora de programar ...


creo que la respuesta es sencilla, tengo 13 años, estoy empezando y no se hacer demasiadas cosas.
 
agradezco la confianza que tienes para decir lo del script currado, pero ojala fuera asi jajaja, no es el caso pero te lo agradezco.
 
 
 
lo unico que me gustaria saber es como hacer que al pulsar ctrl izquierdo aumenta la velocidad.
 
gracias por su aporte.

Octubre 28, 2017, 10:51:22 AM #5 Ultima modificación: Octubre 28, 2017, 10:53:44 AM por lightbug
Cita de: zopas tv date=1509175662lo unico que me gustaria saber es como hacer que al pulsar ctrl izquierdo aumenta la velocidad.
   


Sencillo hombre, te estás respondiendo vos solo:
 
1- "al pulsar ctrl izquierdo"... investiga entradas (teclado, mouse, controlador, etc) en Unity, como hacés para detectarlas, una vez?, cuadro a cuadro?, el input manager?... esto es clave, antes de hacer cualquier cosa tenés que saber la enorme cantidad de 3 funciones pedorras (mejor dicho "tipo" de funciones) que te van a abrir las puertas a este mundo. up, getdown y get.
 
2 - "aumenta la velocidad"... investigá rigidbodies(velocidad, fuerza, torques, fixedUpdate, kinematicos vs dinamicos, etc). La velocidad no es una variable llamada "velocidad" como pusiste en tu código, es más, si en C# pongo Destroy(world) no explota el mundo, se entiende? para exagerar un poco. Lo que vós llamás velocidad debería ser esto:
 
https://docs.unity3d.com/ScriptReference/Rigidbody-velocity.html
 
Es decir que primero tenés que referenciarla en tu script (mirá el código ejemplo), es decir, buscá el componente rigidbody, una vez lo tengas accede a su vector"velocity" (Un vector3, no un float) y seteala. Si querés un nitro multiplica dicho vector por el valor que quieras, ejemplo un nitro x4. De que forma debería estar "presentada" una velocidad? de un vector normalizado (magnitud 1) * un "factor" (el float, generalmente), cuando llegue el momento y estés apretando la tecla indicada lo que vas a modificar no es el vector entero, sino simplemente el "factor", quizás por esto te confundiste con el float, pero el algebra vectorial es así.
 
 
 
Tenés que pensar paso a paso, como hice con tu frase, descomponé todo y sobretodo ponete a leer el manual (no las referencias), es muy didactico, nadie le da bola, andá función por función, clase por clase, a modo de entender de que es capaz el motor, que cosas podés o vas a poder ser capaz de realizar, eso te abre un abanico de posibilidades y restricciones, si mañana se te ocurre algo vas a saber al toque como hacerlo, si es posible, o por lo menos a partir de donde empezar a investigarlo.
 
Saludos
 
 

Etiquetas: