Noticias

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

Controlador de coche Up to Down 2D

Iniciado por pcorralr, Enero 22, 2016, 09:36:24 PM

Tema anterior - Siguiente tema
Enero 22, 2016, 09:36:24 PM Ultima modificación: Enero 22, 2016, 10:26:46 PM por pcorralr
Buenas, soy muy novato en esto. he hecho alguna prueba y he seguido bastantes tutoriales de pproyectos de unity3D.El caso es que busco y no encuentro la manera de hacer un control para un coche visto desde arriba en 2D. Si alguien sabe de algun tutorial para aprender a acelerar el coche segun la direccion en la que esté mirando, le agradeceria mucho que me pasara el link.Por mis propios medios solo  consigo moverlo en la direccion de las flechas del teclado pero lo que intento es por ejemplo pulsar arriba y que se mueva en la direccion en la que está el coche, que acelere.Llevo dias buscando y no encuentro como hacerlo y la verdad que me estoy desesperando un poco ya using UnityEngine;
using System.Collections;

public class CarMovement : MonoBehaviour {
    public float power = 50;
    public float maxspeed = 50;
    public float turnpower = 2;
    public float friction = 3;
    public Vector2 curspeed;
    Rigidbody2D rigidbody2D;

    // Use this for initialization
    void Start()
    {
        rigidbody2D = GetComponent<Rigidbody2D>();
    }


    void FixedUpdate()
    {
        curspeed = new Vector2(rigidbody2D.velocity.x, rigidbody2D.velocity.y);

        if (curspeed.magnitude > maxspeed)
        {
            curspeed = curspeed.normalized;
            curspeed *= maxspeed;
        }

        if (Input.GetKey(KeyCode.S))
        {
            rigidbody2D.AddForce(transform.up * power);
            rigidbody2D.drag = friction;
        }
        if (Input.GetKey(KeyCode.W))
        {
            rigidbody2D.AddForce(-(transform.up) * (power / 2));
            rigidbody2D.drag = friction;
        }
        if (Input.GetKey(KeyCode.A))
        {
            transform.Rotate(Vector3.forward * turnpower);
        }
        if (Input.GetKey(KeyCode.D))
        {
            transform.Rotate(Vector3.forward * -turnpower);
        }

        noGas();

    }

    void noGas()
    {
        bool gas;
        if (Input.GetKey(KeyCode.W) || Input.GetKey(KeyCode.S))
        {
            gas = true;
        }
        else
        {
            gas = false;
        }

        if (!gas)
        {
            rigidbody2D.drag = friction * 2;
        }
    }
}
 

Es más fácil que gires el coche con el rigidbody2D, puedes sumar +1 cuando gires a la derecha y restarlo cuando gires a la izquierda, así te olvidas de Vector3 ya que sólo gira en el eje Z 

[quote author=juanma_teso" data-ipsquote-contapp="forums" data-ipsquote-contenttype="forums" data-ipsquote-contentclass="forums_Topic" data-ipsquote-contentid="34971" data-ipsquote-contentcommentid="126397">Es más fácil que gires el coche con el http://docs.unity3d.com/ScriptReference/Rigidbody2D-rotation.html date=1453501554]rigidbody2D, puedes sumar +1 cuando gires a la derecha y restarlo cuando gires a la izquierda, así te olvidas de Vector3 ya que sólo gira en el eje Z [/quote]Muchas gracias! A ver si pillo un poco de tiempo y me pongo con ello. Saludos!

Etiquetas: