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.
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;
}
}
}
Vaya, llevo un jaleo de scripts que seguramente me confundí al subirlo… muchas gracias por avisarme del fallo!! ????