Noticias

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

Acelerar paulatinamente(RESUELTO)

Iniciado por ramunda, Marzo 04, 2017, 10:30:25 AM

Tema anterior - Siguiente tema
Marzo 04, 2017, 10:30:25 AM Ultima modificación: Marzo 04, 2017, 04:50:03 PM por ramunda
Buenos dias comunidad.
 
Agradecería si podéis decirme donde estoy fallando y porque...
 
He creado estas 4 lineas de codigo , nada del otro mundo, para mover un objeto adelante y hacia los lados etc con los axis verticales y horizontales,.
 
 
 

using System.Collections;
using UnityEngine;
    public class controlbarco : MonoBehaviour {

public float velocidadgiro=0f;
public float marcha=0f;
float startY;
private Rigidbody rb;
void Start()
{
   rb = GetComponent<Rigidbody>();

}
void Update () {
   
float girar =Input.GetAxis("Horizontal");
float adelante =Input.GetAxis("gatilloderecha");
   
rb.AddTorque(transform.up*velocidadgiro*girar*Time.deltatime);
rb.AddForce(transform.forward*adelante*marcha*Time.deltatime);
   
    }
    }

 
bien, la idea era que girara / acelerara a una velocidad paulatina osea con el Time.deltatime hasta alcanzar el valor de el float correspondiente.
 
Pues no. no se mueve en absoluto , en cambio si le quito los Time.....si se mueve pero alcanza la velocidad tanto de giro como de marcha de golpe  y sigue acelerando sin parar! de acelerar asi;:
 

rb.AddTorque(transform.up*velocidadgiro*girar);
rb.AddForce(transform.forward*adelante*marcha);

 
Y la pregunta es:
 
Que estoy haciendo mal :)
 
No da error..
 
Gracias de antemano!!!
 
 

Estás aplicando una force dependiente de la mass del body. Qué mass tienes puesta? Piensa en hacerla independiente de la mass cambiando el ForceMode a acceleration o velocity p.ej o cambiándolo a una mass real si es un coche ( 1 = 1kg por convenio, 1500 de unidad p.ej.)
 
Desconozco los valores de girar/marcha, y probablemente serán demasiado grandes.
 
Ponlo en el fixedUpdate ya que es physics.
 
Error no va a dar ya que sintácticamente es correcto. Al final es un equilibrio entre todos los valores y a una situación concreta. Tendrás que irlo afinando.

Marzo 04, 2017, 02:24:30 PM #2 Ultima modificación: Marzo 04, 2017, 04:49:36 PM por ramunda
Cita de: iRobb date=1488624434Estás aplicando una force dependiente de la mass del body. Qué mass tienes puesta? Piensa en hacerla independiente de la mass cambiando el ForceMode a acceleration o velocity p.ej o cambiándolo a una mass real si es un coche ( 1 = 1kg por convenio, 1500 de unidad p.ej.)
   
   
      Desconozco los valores de girar/marcha, y probablemente serán demasiado grandes.
   
   
      Ponlo en el fixedUpdate ya que es physics.
   
   
      Error no va a dar ya que sintácticamente es correcto. Al final es un equilibrio entre todos los valores y a una situación concreta. Tendrás que irlo afinando.
   


Gracias iRobb , la masa la tengo al 1, si la subio no se mueve , los valores marxa y velocidad de giro estan en 50/100 los dos.
 
lo he puesto en FixedUpdate ahora si acelera correctamente lo he dejado asi:
 

using System.Collections;
using UnityEngine;
    public class controlbarco : MonoBehaviour {

public float velocidadgiro = 50f;
public float marcha=50f;
public float marxamax = 60f;
float startY;
private Rigidbody rb;
public GameObject espuma;
float espumas = 0f;
void Start()
{
   rb = GetComponent<Rigidbody>();
   espuma.SetActive (false);
   
}
void FixedUpdate () {
   
   float h = Input.GetAxis ("Horizontal") * velocidadgiro;
   float v = Input.GetAxis ("gatilloderecha") * marcha * Time.deltaTime;
   rb.AddTorque(transform.up *h);
   rb.velocity = transform.forward * v;
   
}
}

 
Muchas gracias por todo, un saludo cordial.
 
 

Etiquetas: