Actualicé mi código, mi problema actual es solo que el movimiento del jugador ya no funciona y me gustaría saber qué debo hacer para poder ajustar la altura del salto y que cuando llegue a esta altura, la gravedad vuelve a aparecer Código:
//Private Variables private CharacterController _chaCont; private float currentGravity; private Vector3 finalMovement; //Globally delared //Public Variables public float speed; public float gravity; public float jumpSpeed; // Start is called before the first frame update void Start() { _chaCont = gameObject.GetComponent<CharacterController>(); } // Update is called once per frame void Update() { if (Input.GetKeyDown(KeyCode.Space)) { finalMovement = jump() + ApplyGravity(); } _chaCont.Move(finalMovement * Time.deltaTime); } Vector3 ApplyGravity() { Vector3 gravityMovement = new Vector3(0, -currentGravity, 0); currentGravity += gravity * Time.deltaTime; if (_chaCont.isGrounded) { if (currentGravity > 1f) currentGravity = 1f; } return gravityMovement; } Vector3 Movement() { Vector3 moveVector = Vector3.zero; moveVector += transform.forward * Input.GetAxis("Vertical"); moveVector += transform.right * Input.GetAxis("Horizontal"); moveVector *= speed; return moveVector; } Vector3 jump() { Vector3 jumpVector = Vector3.zero; jumpVector += transform.up * Input.GetAxis("Jump"); jumpVector *= jumpSpeed; return jumpVector; }}
Buenas noches. ¿Ha probado que el sistema de entrada que proporciona C# debe ser como el siguiente código?
//Private Variables private CharacterController _chaCont; private float currentGravity; private Vector3 finalMovement; //Globally delared //Public Variables public float speed; public float gravity; // Start is called before the first frame update void Start() { _chaCont = gameObject.GetComponent<CharacterController>(); } // Update is called once per frame void Update() { Vector3 initialMovement = Movement(); if(Input.GetKeyDown(KeyCode.Space)){ finalMovement = initialMovement + ApplyGravity(); } else{ finalMovement = initialMovement; } _chaCont.Move(finalMovement * Time.deltaTime); } Vector3 ApplyGravity() { Vector3 gravityMovement = new Vector3(0, -currentGravity, 0); currentGravity += gravity * Time.deltaTime; if (_chaCont.isGrounded) { if (currentGravity > 1f) currentGravity = 1f; } return gravityMovement; } Vector3 Movement() { Vector3 moveVector = Vector3.zero; moveVector += transform.forward * Input.GetAxis("Vertical"); moveVector += transform.right * Input.GetAxis("Horizontal"); moveVector *= speed; return moveVector; }