Jump to content
Sign in to follow this  
zopas tv

problema con script de nitro

Recommended Posts

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;

		}

 

Share this post


Link to post
Share on other sites

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?

Share this post


Link to post
Share on other sites

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

Share this post


Link to post
Share on other sites

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

Edited by Arthure

Share this post


Link to post
Share on other sites

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.

Share this post


Link to post
Share on other sites
8 hours ago, zopas tv said:

lo 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

 

Edited by lightbug

Share this post


Link to post
Share on other sites
Sign in to follow this  

UnitySpain © Todos los derechos reservados 2020
×
×
  • Create New...