Noticias

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

Movimiento del vehículo

Iniciado por newuser, Septiembre 10, 2015, 03:06:15 PM

Tema anterior - Siguiente tema
Septiembre 10, 2015, 03:06:15 PM Ultima modificación: Septiembre 10, 2015, 03:09:40 PM por newuser
Bueno ahora estoy haciendo el movimiento de un vehículo muyyyy simple,el problema es que seguí tutoriales de scripting (estaban en c#) y la verdad es que no me funcionaban del todo bien,me explico.El vehículo se quedaba en el aire sin gravedad, si desactivo la gravedad salía volando,no se movia el coche,le puse fricción en 1(con un rigidbody de 10) y tampoco.Nose que falla busque informacion tanto en la comunidad inglesa como española y nada.Uso la versión 4.6.6f1,y hago lo siguiente: creo un cubo,cuatro cilindros(simulando el modelo de las ruedas) y cuantro gameobject's vacíos(los cuales tienen un wheelCollider),emparento los cilindros a los gameobject's(haciendo que los gameobject's sean padres de los cilindros) y añado a lo que se suponen que son ruedas el script "DetecWheelCol".Luego las ruedas las emparento a el cubo (haciendo que el cubo sea el padre,y este cubo tiene un box collider y un rigidbody por defecto con una masa de 10) y le añado la script de PlayerCar12.Aqui están los códigos que más se acercaban a lo que yo quiero y funcionaban a medias:PlayerCar12:using UnityEngine;
using System.Collections;public class PlayerCar12 : MonoBehaviour {    public Vector3 centerOfMass = Vector3.zero;
    public WheelCollider frontLeftWheel;
    public WheelCollider frontRightWheel;    public float speed = 100;
    public float maxSteerAngle = 30;    private bool hasWheelContact = false;
    private float motorForce = 0;    public void HasContact(){
        hasWheelContact = true;
    }    // Use this for initialization
    void Start () {
        rigidbody.centerOfMass = centerOfMass;
    }
    
    // Update is called once per frame
    void FixedUpdate () {
        motorForce = Input.GetAxis ("Vertical") * speed;
            if (hasWheelContact) {
                frontLeftWheel.motorTorque = motorForce;
                frontRightWheel.motorTorque = motorForce;
        }
        float rotation = Input.GetAxis ("Horizontal") * maxSteerAngle;
        frontLeftWheel.transform.localEulerAngles = new Vector3 (0, rotation,0);
        frontRightWheel.transform.localEulerAngles = new Vector3 (0, rotation, 0);
        hasWheelContact = false;
    }
}   DetectWheelCol:using UnityEngine;
using System.Collections;public class DetectWheelCol : MonoBehaviour {    private WheelCollider carWhell;
    private WheelHit hit;
    private bool isHit = false;    // Use this for initialization
    void Start () {
        carWhell = this.collider as WheelCollider;
    }
    
    // Update is called once per frame
    void FixedUpdate () {
        isHit = carWhell.GetGroundHit (out hit);
        if(isHit)
            this.transform.parent.SendMessage("HasContact");
    }
}  Muchas graciasHe de añadir que este script no es mío.

Por qué no subes toda la escena en los casos que ver el problema es intentar leer el código, e incluso a veces, hay más código sin que os deis cuenta?Hay mil parámetros en Unity.Subid la escena, la importamos y podemos ver los mismos puntos de vista, no algo sesgado.

Etiquetas: