Entrar y salir del coche Unity

Vamos aprender a salir y entrar en el coche de una forma bastante fácil, ya que solo deberíamos, desactivando los script, ejemplo empiezo a jugar desactivo el script del coche, ya que si no lo desactivo se movería a la vez que nuestro personaje, así que vamos a ello

Aquí tenemos nuestro coche y nuestro personaje, y nuestro escenario además tenemos dos botones, donde uno es salir

y el otro entrar, aunque también podemos ponerlo sin botones. pero primeramente lo vamos hacer con botones

Los script que tengamos en el personaje, como en el coche es indiferente,  aun así lo voy a poner. aquí  voy a poner los componentes del coche

 

nuestro coche tiene un Box collider2D, un rigibody2D con la gravedad cero

y un script que ahora os mostrare

Nuestro coche 2D

Vemos como tenemos el Box Collider 2D de nuestro coche muy pequeñito

Ahora iremos al Scrip del coche Aunque como ya le dicho podemos tener el que vosotros queráis es indiferente

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

public class movement : MonoBehaviour
{

    public float velocidad;
    public float rotacion;
    private Rigidbody2D rb;



    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 * velocidad);

        rb.AddForce(speed);

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

        }
        else
        {
            rb.rotation -= h * rotacion * (rb.velocity.magnitude / 5.0f);

        }

        Vector2 forward = new Vector2(0.0f, 0.5f);
        float steeringRightAngle;
        if (rb.angularVelocity > 0)
        {
            steeringRightAngle = -90;
        }
        else
        {
            steeringRightAngle = 90;
        }

        Vector2 rightAngleFromForward = Quaternion.AngleAxis(steeringRightAngle, Vector3.forward) * forward;
        Debug.DrawLine((Vector3)rb.position, (Vector3)rb.GetRelativePoint(rightAngleFromForward), Color.blue);

        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.black);

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

    }
}

Aquí tendríamos nuestro script en velocidad 1 en rotación 20

Ahora os voy a enseñar los componentes del personaje después os enseñare el script
Los componentes del personaje son básicamente iguales un básicamente iguales un Box Collider 2D, tengo activado el is Trigger par que cuando se acerque nuestro personaje a nuestro coche no salga disparado. y luego tenemos el Tag esto si es importante que lo pongamos a nuestro personaje que se montara en el coche. Ahora os voy a enseñar el Script del personaje
using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class movientodelpersonaje : MonoBehaviour
{
    public float speed;
    private Rigidbody2D rb;
    private Vector2 moveVelocity;

    // Start is called before the first frame update
    void Start()
    {
        rb = GetComponent<Rigidbody2D>();

    }

    // Update is called once per frame
    void Update()
    {
        Vector2 moveInput = new Vector2(Input.GetAxisRaw("Horizontal"), Input.GetAxisRaw("Vertical"));
        moveVelocity = moveInput.normalized * speed;

    }

    void FixedUpdate()
    {
        rb.MovePosition(rb.position + moveVelocity * Time.fixedDeltaTime);
    }
}

Este es el movimiento que tengo yo pero vosotros podéis tener el que queráis, lo único importante es el Tag del personaje

Ahora si comenzamos a programar la entrada y salida de nuestro personaje.

Ahora vamos a nuestro coche, y le vamos a crear dos objetos vacios. uno le voy a llamar Puerta, y a otro Salida

nuestro coche de formula 1 con sus dos objetos vacíos. el script se lo pondré a la puerta

Ahora vamos al objeto vacío de la puerta y vamos hacer lo siguiente

Aquí tenemos la puerta del objeto vacio. le hemos creado un Box Collider2D con el Is Trigger activado. y un Script 

Ahora vamos al script que le hemos creado a la puerta que será para entrar y salir del coche

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

public class controladordelvehiculo : MonoBehaviour
{
    public GameObject jugador;
    public bool puedoentrar;
    public movement vehiculocontrolador;
    public bool salirdelcoche;

    public Transform Target;





        public void Salirdelcochedeformula1()
        {

            salirdelaformula();

        }
        public void entraraconducirelcoche()
        {


            entraralvehiculo();

        }


        void OnTriggerEnter2D(Collider2D other)
        {
            if (other.tag == "persona")
            {
                Debug.Log("estoy colisionando");
                jugador = other.gameObject;
                puedoentrar = true;
                salirdelcoche = false;
            }

        }

        public void entraralvehiculo()
        {
            if (puedoentrar)
            {
                jugador.SetActive(false);
                puedoentrar = true;
                vehiculocontrolador.enabled = true;
                gameObject.SetActive(false);
            }




        }


        public void salirdelaformula()
        {
            jugador.transform.position = Target.position;
            jugador.SetActive(true);
            vehiculocontrolador.enabled = false;

        }


    }

este seria el script para entrar y salir del coche tendríamos que crear los botones para que funcione , ahora si vamos al objeto de puerta encontraremos esto

 

El script tenemos al jugador, que es donde pondríamos al personaje, al vehículo, donde pondríamos al coche, y Target el objeto vacío que hemos creado de Salida., pero nos faltan los botones para que funcione

Ahora creamos dos botones, así que creamos un canvas y creados dos botones uno de Entrar y otro de Salir.

al de entrar le incorporamos el script del controlador

Al boton de entrar le incorporamos el segundo « public void entraraconducirelcoche()»

y al salir

» public void Salirdelcochedeformula1()«

Y ya lo tendriamos

  • Related Posts

    Messi hizo un Mundial increíble con 39 años, pero para mí no merece el Balón de Oro 2026.

    Messi y el Balón de Oro 2026 un Mundial increíble a los 39 años, pero para mí no es suficiente Hablar de Lionel Messi y el Balón de Oro, creo…

    Mourinho ha vuelto, pero el Real Madrid no: muchas estrellas, demasiado ego y muy poco equipo

    Mourinho y su segunda etapa en el Real Madrid: tengo muchas dudas La segunda etapa de Mourinho en el Real Madrid me genera muchas dudas. Yo soy de esas personas…

    Deja una respuesta

    You Missed

    Messi hizo un Mundial increíble con 39 años, pero para mí no merece el Balón de Oro 2026.

    • Por admin
    • septiembre 29, 2026
    • 5 views
    Messi hizo un Mundial increíble con 39 años, pero para mí no merece el Balón de Oro 2026.

    Mourinho ha vuelto, pero el Real Madrid no: muchas estrellas, demasiado ego y muy poco equipo

    • Por admin
    • septiembre 26, 2026
    • 13 views
    Mourinho ha vuelto, pero el Real Madrid no: muchas estrellas, demasiado ego y muy poco equipo

    Lamine vs Kane: ganar el Mundial no significa haber sido el mejor

    • Por admin
    • septiembre 26, 2026
    • 22 views
    Lamine vs Kane: ganar el Mundial no significa haber sido el mejor

    Sí, quéjate del árbitro… pero primero juega al fútbol, el problema del Real Madrid va más allá del VAR.

    • Por admin
    • septiembre 22, 2026
    • 24 views
    Sí, quéjate del árbitro… pero primero juega al fútbol, el problema del Real Madrid va más allá del VAR.

    Raphinha tira del Barça, Lamine se lleva las portadas: ¿rendimiento o marketing?

    • Por admin
    • septiembre 20, 2026
    • 49 views
    Raphinha tira del Barça, Lamine se lleva las portadas: ¿rendimiento o marketing?

    Del Messi-Cristiano al “yo merezco el Balón de Oro”: ¿en qué momento cambió tanto el fútbol?

    • Por admin
    • septiembre 19, 2026
    • 39 views
    Del Messi-Cristiano al “yo merezco el Balón de Oro”: ¿en qué momento cambió tanto el fútbol?