Character Controller Unity – Salto Basico

Character Controller Unity – Salto Basico

En el video de hoy aprenderemos como saltar en Unity 3D 2018 y continuaremos ampliando nuestro Character Controller para dejar a nuestro personaje listo para afrontar su siguiente desafío!!

Script PlayerController:

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

public class PlayerControllerTutorial4 : MonoBehaviour {

    float horizontalMove;
    float verticalMove;

    private Vector3 playerInput;

    public CharacterController player;
    public float playerSpeed;
    public float gravity;  
    public float fallVelocity;

    public Camera mainCamera;
    private Vector3 camForward;
    private Vector3 camRight;
    private Vector3 movePlayer;

    public float jumpForce = 8f;
    public bool isJumping = false;

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

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

        PlayerInput();

        CamDirection();

        PlayerMovement();        

        SetGravity();

        PlayerSkills();

        player.Move(movePlayer * Time.deltaTime);  

        Debug.Log(player.isGrounded);

    }

    //Funcion que obtiene el imnput de movimiento de nuestro jugador.
    public void PlayerInput()
    {
        horizontalMove = Input.GetAxis("Horizontal");
        verticalMove = Input.GetAxis("Vertical");

        playerInput = new Vector3(horizontalMove, 0, verticalMove);
        playerInput = Vector3.ClampMagnitude(playerInput, 1);
    }

    //Funcion para determinar la direccion a la que mira la camara. 
    public void CamDirection()
    {
        camForward = mainCamera.transform.forward;
        camRight = mainCamera.transform.right;

        camForward.y = 0;
        camRight.y = 0;

        camForward = camForward.normalized;
        camRight = camRight.normalized;
    }

    public void PlayerMovement()
    {
        movePlayer = playerInput.x * camRight + playerInput.z * camForward;

        movePlayer = movePlayer * playerSpeed;

        player.transform.LookAt(player.transform.position + movePlayer);
    }

    public void PlayerSkills()
    {
        if (player.isGrounded)
        {
            isJumping = false;
        }

        //Jump                 
        if (player.isGrounded && Input.GetButtonDown("Jump"))
         {
            isJumping = true;
            fallVelocity = jumpForce;
            movePlayer.y = fallVelocity;
         }
    }

    //Funcion para la gravedad.
    public void SetGravity()         
    {
        if (player.isGrounded) 
        {                       
            fallVelocity = -gravity * Time.deltaTime; 
            movePlayer.y = fallVelocity; 
        }
        else
        {
            fallVelocity -= gravity * Time.deltaTime; 
            movePlayer.y = fallVelocity; 
        }        
    }
}

No te lo pierdas y aprende a crear tus propios videojuegos con el motor Unity 3D y aprendamos juntos el maravilloso arte del desarrollo de videojuegos.

2 comentarios en “Character Controller Unity – Salto Basico”

  1. hola buenas, estoy mirando tus tutoriales desde esta pagina y me e dado cuenta de que este script no es el mismo que muestras en el vídeo, en el apartado de salto has añadido unas variables que en el vídeo no están, te lo digo por si quieres cambiarlo, te adjunto el script que muestras en el vídeo y funciona correctamente, en cambio este de la web da un error el cual no nos permite usar el script.
    por si lo quieres cambiar al que muestras en el vídeo y que así todos puedan usarlo mas fácilmente, un saludo y gracias por los tutoriales.

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

    public class PlayerController : MonoBehaviour
    {
    float horizontalMove;
    float verticalMove;

    private Vector3 playerInput;

    public CharacterController player;
    public float playerSpeed;
    public float gravity;
    public float fallVelocity;
    public float jumpForce;

    public Camera mainCamera;
    private Vector3 camForward;
    private Vector3 camRight;
    private Vector3 movePlayer;
    // Use this for initialization
    void Start()
    {
    player = GetComponent();
    }
    // Update is called once per frame
    void Update()
    {
    horizontalMove = Input.GetAxis(“Horizontal”);
    verticalMove = Input.GetAxis(“Vertical”);

    playerInput = new Vector3(horizontalMove, 0, verticalMove);
    playerInput = Vector3.ClampMagnitude(playerInput, 1);

    CamDirection();

    movePlayer = playerInput.x * camRight + playerInput.z * camForward;

    movePlayer = movePlayer * playerSpeed;

    player.transform.LookAt(player.transform.position + movePlayer);

    SetGravity();

    PlayerSkills();

    player.Move(movePlayer * Time.deltaTime);

    Debug.Log(player.isGrounded);

    }
    //Funcion para determinar la direccion a la que mira la camara.
    public void CamDirection()
    {
    camForward = mainCamera.transform.forward;
    camRight = mainCamera.transform.right;
    camForward.y = 0;
    camRight.y = 0;
    camForward = camForward.normalized;
    camRight = camRight.normalized;
    }

    //funcion para las habilidades del jugador
    public void PlayerSkills()
    {

    //Jump
    if (player.isGrounded && Input.GetButtonDown(“Jump”))
    {

    fallVelocity = jumpForce;
    movePlayer.y = fallVelocity;
    }
    }

    //Funcion para la gravedad.
    public void SetGravity()
    {
    if (player.isGrounded)
    {
    fallVelocity = -gravity * Time.deltaTime;
    movePlayer.y = fallVelocity;
    }
    else
    {
    fallVelocity -= gravity * Time.deltaTime;
    movePlayer.y = fallVelocity;
    }
    }

    }

Deja un comentario