Unity Spain

Post Antiguos => General (Antiguo) => Mensaje iniciado por: pcorralr en Enero 22, 2016, 09:36:24 PM

Título: Controlador de coche Up to Down 2D
Publicado por: pcorralr en Enero 22, 2016, 09:36:24 PM
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;
        }
    }
}
 
Título: Controlador de coche Up to Down 2D
Publicado por: juanma_teso en Enero 22, 2016, 11:25:54 PM
Es más fácil que gires el coche con el rigidbody2D (http://docs.unity3d.com/ScriptReference/Rigidbody2D-rotation.html), 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 
Título: Controlador de coche Up to Down 2D
Publicado por: pcorralr en Febrero 10, 2016, 10:24:08 PM
[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 Sólo texto | Texto con Imágenes