Juego de Carreras Unity2D

Vamos a aprender hacer un juego de carreras con Unity2D, donde realizare los movimientos hacia arriba, abajo, derecha, izquierda, calculando y contrarrestando la fuerza opuesta que lo veremos con una línea roja

Bueno ahora vamos al tutorial del juego

Aquí tenemos nuestro coche,  de momento es una simple imagen, como vemos vamos a cambiar el nombre a «blue car»

 

Vemos como hemos cambiado el nombre a blue car y en «Order in Layer» le hemos puesto un 4 que en español significa «orden de capa» si el coche tiene una capa 0 y la imagen de fondo tiene 1, no veremos la imagen del coche, así que pondré la imagen de fondo que es la de la carretera en «order in layer» la pondré un 1 y la imagen del coche un 4 para que este siempre por encima de las imágenes. Ahora lo siguiente que voy a crear será un Box colider2D y un rigibody2D.

Ahora vamos a crearle un script al coche y vamos a programar lo siguiente.

 

using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class movimientodelcoche2D : MonoBehaviour
{
    public float acceleration;
    public float direccionAutomovil;
    private Rigidbody2D rb;
    // Start is called before the first frame update
    void Start()
    {
        rb = GetComponent<Rigidbody2D>();

    }

    // Update is called once per frame
    void FixedUpdate()
    {

        float h = -Input.GetAxis("Horizontal");
        float v = Input.GetAxis("Vertical");

        Vector2 speed = transform.up * (v * acceleration);
        rb.AddForce(speed);

        float direction = Vector2.Dot(rb.velocity, rb.GetRelativeVector(Vector2.up));
        if (direction >= 0.0f)
        {
            rb.rotation += h * direccionAutomovil * (rb.velocity.magnitude / 5.0f);
        }
        else
        {
            rb.rotation -= h * direccionAutomovil * (rb.velocity.magnitude / 5.0f);
        }

        Vector2 forwar = new Vector2(0.0f, 0.5f);
        float steerinRightAngle;
        if (rb.angularVelocity > 0)
        {
            steerinRightAngle = -99;
        }
        else
        {
            steerinRightAngle = 90;
        }
        Vector2 rightAngleFromForward = Quaternion.AngleAxis(steerinRightAngle, Vector3.forward) * forwar;
        Debug.DrawLine((Vector3)rb.position, (Vector3)rb.GetRelativePoint(rightAngleFromForward), Color.green);

        float driftForce = Vector2.Dot(rb.velocity, rb.GetRelativeVector(rightAngleFromForward.normalized));

        Vector2 relativeForce = (rightAngleFromForward.normalized * -1.0f) * (driftForce * 10.0f);


        Debug.DrawLine((Vector3)rb.position, (Vector3)rb.GetRelativePoint(relativeForce), Color.red);

        rb.AddForce(rb.GetRelativeVector(relativeForce));
    }
}


 

Y jugamos aquí un poco con la Acceleration 5 y Dirección Automóvil y ya tendríamos nuestro vehículo en movimiento.

 

 

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *