je viens vers vous car je suis en train de suivre une formation pour animer un personnage dans Unity. Tout se passe pour l'instant bien jusqu'a ce que je commence à gérer le saut chez mon personnage....
Voici les explications:
J'ai crée un script que j'ai nommé déplacement que j'attribue à mon personne. tout se passe bien pour la marche avant arrière à gauche a droite mais lorsque je demande à mon personnage de sauter.
Il y a deux cas de figure, soit il saute mais comme si il planait si j'utilise GetKey(Kecode.space) soit il ne saute pas ou de facon très aléatoire lorsque j'utilise GetkeyDown(Kecode.space).... j'ai beau marteler la touche espace il saute un fois sur 10....
La ou je ne comprends pas c'est que dans formation l'enseignant utilise GeykeyDown et cela marche à merveille....est ce que cela vient de mon code ou des paramètres ? Pour info, j'ai bien un boxcollider et un rigidbody sur mon perso.....
voici mon code
Code : Tout sélectionner
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class Deplacements : MonoBehaviour
{
// Variables
[SerializeField] float walkSpeed = 3f, runSpeed = 8f, rotSpeed = 100f, jumpForce = 350f;
float axeH, axeV;
Animator anim;
Rigidbody rb;
private void Awake()
{
anim = GetComponent<Animator>();
rb = GetComponent<Rigidbody>();
}
private void Update()
{
axeH = Input.GetAxis("Horizontal");
axeV = Input.GetAxis("Vertical");
if (axeV != 0)
{
if (Input.GetKey(KeyCode.LeftShift))
{
transform.Translate(Vector3.forward * runSpeed * axeV * Time.deltaTime);
anim.SetBool("run", true);
anim.SetBool("walk", false);
}
else
{
transform.Translate(Vector3.forward * walkSpeed * axeV * Time.deltaTime);
anim.SetBool("walk", true);
anim.SetBool("run", false);
}
if (axeV < 0)
anim.SetBool("walk", false);
}
else
{
anim.SetBool("walk", false);
}
// Recule du personnage
if(axeH != 0)
{
transform.Rotate(Vector3.up * rotSpeed * axeH * Time.deltaTime);
}
//Donner le coup 1
if (Input.GetKey(KeyCode.Mouse0))
{
anim.SetBool("coup1", true);
}
else
{
anim.SetBool("coup1", false);
}
}
private void FixedUpdate()
{
if (Input.GetKey(KeyCode.Space))
{
rb.AddForce(Vector3.up * jumpForce);
}
}
}