sábado, 27 de noviembre de 2021

Unity3D - Movimiento

 Movimiento en una dirección



Código

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

public class ControlJugador : MonoBehaviour
{
    public float velocidad;

    // Update is called once per frame
    void Update()
    {
        transform.Translate(new Vector3(0,0,1) * Time.deltaTime * velocidad);
    }
}

Es posible poner también:
transform.Translate(Vector3.forward * Time.deltaTime * velocidad);
transform.Translate(Vector3.back * Time.deltaTime * velocidad);
transform.Translate(Vector3.left * Time.deltaTime * velocidad);
transform.Translate(Vector3.right * Time.deltaTime * velocidad);
transform.Translate(Vector3.up * Time.deltaTime * velocidad);
transform.Translate(Vector3.down * Time.deltaTime * velocidad);

Movimiento en todas direcciones (con teclado)



Código

public class ControlJugador : MonoBehaviour
{
    public float velocidad;
    
    public float verticalInput;
    public float horizontalInput;

    // Update is called once per frame
    void Update()
    {
        verticalInput = Input.GetAxis("Vertical");
        horizontalInput = Input.GetAxis("Horizontal");

        transform.Translate(Vector3.forward * Time.deltaTime * velocidad * verticalInput);
        transform.Translate(Vector3.right * Time.deltaTime * velocidad * horizontalInput);
    }
}

Giro de un vehículo


Código

public class ControlJugador : MonoBehaviour
{
    public float velocidad;
    public float velocidadGiro;

    public float verticalInput;
    public float horizontalInput;

    // Update is called once per frame
    void Update()
    {
        verticalInput = Input.GetAxis("Vertical");
        horizontalInput = Input.GetAxis("Horizontal");

        transform.Translate(Vector3.forward * Time.deltaTime * velocidad * verticalInput);
        transform.Rotate(Vector3.up * Time.deltaTime * velocidadGiro * horizontalInput); 
    }
}

Movimiento de un avión


Código


public class ControlJugador : MonoBehaviour
{
    public float velocidad;
    public float velocidadGiro;

    public float horizontalInput;
    public float verticalInput;


    // Update is called once per frame
    void Update()
    {
        horizontalInput = Input.GetAxis("Horizontal");
        verticalInput = Input.GetAxis("Vertical");

        transform.Translate(Vector3.forward * Time.deltaTime * velocidad);
        transform.Rotate(new Vector3(0,1,0) * Time.deltaTime * velocidadGiro * horizontalInput);
        transform.Rotate(new Vector3(1, 0, 0) * verticalInput * velocidadGiro * Time.deltaTime);
    }
}