Sauter
Attention
Si vous configurez le saut, vous ne serez plus capable de grimper avec votre joueur.
Voici le tutoriel qui vous montera comment créer le saut en VR:
Voici le code pour sauter (si le code est nommé jump):
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.InputSystem;
public class jump : MonoBehaviour
{
[SerializeField] private InputActionProperty jumpButton;
[SerializeField] private float jumpHeight = 3f;
[SerializeField] private CharacterController joueur;
[SerializeField] private LayerMask groundLayer;
private float gravity = Physics.gravity.y;
private Vector3 mouvement;
private void Update()
{
bool _isGrounded = isGrounded();
if(jumpButton.action.WasPressedThisFrame()&& _isGrounded)
{
Jump();
}
mouvement.y += gravity * Time.deltaTime;
joueur.Move(mouvement * Time.deltaTime);
}
private void Jump()
{
mouvement.y = Mathf.Sqrt(jumpHeight * -3.0f * gravity);
}
private bool isGrounded()
{
return Physics.CheckSphere(transform.position, 0.2f, groundLayer);
}
}
Voici un deuxième code pour sauter qui est le même, mais qui peut régler le problème du climb (si le code est nommé jump):
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.InputSystem;
public class PlayerJump : MonoBehaviour
{
[SerializeField] private InputActionProperty jumpButton;
[SerializeField] private float jumpHeigt = 3f;
[SerializeField] private CharacterController cc;
[SerializeField] private LayerMask groundLayers;
private bool timer;
private float gravity = Physics.gravity.y;
private Vector3 movement;
private void Update()
{
bool _IsGrounded = IsGrounded();
if (jumpButton.action.WasPressedThisFrame() && _IsGrounded)
{
Jump();
StartCoroutine("sautTest");
}
if (timer == true)
{
movement.y += gravity * Time.deltaTime;
cc.Move(movement * Time.deltaTime);
}
}
private void Jump()
{
movement.y = Mathf.Sqrt(jumpHeigt * -3.0f * gravity);
}
private bool IsGrounded()
{
return Physics.CheckSphere(transform.position, 0.2f, groundLayers);
}
public IEnumerator sautTest()
{
timer = true;
yield return new WaitForSeconds(2f);
timer = false;
yield break;
}
}