J'ai un petit soucis de code qui ne fonctionne avec un Input qui ne se lance pas à 100%, je m'explique :
J'ai donc un Character Controller et mon script qui me permet d'effectuer des mouvements à un personnage, jusque là tout va bien et ça fonctionne.
J'ai en revanche un de ces Input qui me pose problème, pour sauter plus exactement. Ma condition et le reste de mon script fonctionne correctement, mais de temps en temps dans mon application il arrive que mon personnage ne saute pas ! (c'est le cas 1 fois sur 15 par exemple, c'est juste très aléatoire)
Alors je suis certains que cela ne vient pas d'un faux contact avec mon bouton, ayant fait plusieurs essais à sauter pendant 1 minute avec différentes touches entre mon clavier et ma manette de jeux...
J'avais lu que la fonction Update () est plus appropriée pour des Input que le FixedUpdate (). Cependant le problème est plus récurant dans la fonction Update que dans la fonction FixedUpdate, pour avoir essayé les deux...
Voilà à quoi ressemble mon code :
Code : Tout sélectionner
void Update () {
Vector3 movement = new Vector3 (0, vertVelocity, 0);
movement = transform.rotation * movement * Time.deltaTime;
controller.Move (movement); // controller est mon CharacterController
}
void FixedUpdate () {
Jump ();
}
void Jump (){
if (controller.isGrounded) {
jumpTime = 2; // Possibilité de faire un double jump
vertVelocity = 0;
}
else
vertVelocity += Physics.gravity.y * rb.mass * Time.deltaTime;
if (Input.GetButtonDown (inputSetting.JUMP_BUTTON))
if (jumpTime > 0) {
vertVelocity = jumpPower;
jumpTime--;
}
}