[Résolu] Problème avec le saut et le "run"

Pour les scripts écrits en Javascript (UnityScript). :!: Obsolète :!:
Règles du forum
Merci de respecter la NOMENCLATURE suivante pour vos TITRES de messages :

Commencez par le niveau de vos scripts
DB = Débutant
MY = Moyen
CF = Confirmé

Puis le domaine d'application
-RS = Réseau
-AL = Algorithmie

Exemple :

[DB-RS] Mouvement perso multijoueur
Helias
Messages : 22
Inscription : 14 Avr 2016 10:16
Contact :

[Résolu] Problème avec le saut et le "run"

Message par Helias » 14 Avr 2016 10:21

Bonjour, après des heures de recherche sur internet je n'ai pas réussi à trouver un code me permettant de sauter avec mon personnage.

Le code que j'ai est fait depuis un petit moment, le seul problème c'est que le saut ne marche pas, même si je met n'importe quelle code au niveau de la gravité ou de la vélocité...

code :

Code : Tout sélectionner

#pragma strict
  
//public variables
var speed:float;
var speedRun:float;
var speedRotate:float;
var gravity:float;
var jumpH = 8;
var isFalling = false;
  
//private variables
private var controller:CharacterController;
private var moveDirection:Vector3;
private var deltaTime:float;
private var characterContent:Transform;
private var walk:boolean;
private var run:boolean;
  
function Start () {
  
    controller = GetComponent("CharacterController");
    characterContent = transform.Find("Perso");
}
  
function Update () {
  
    //Cadence du temps
    deltaTime = Time.deltaTime;
    
    
    //Deplacements Haut/bas
    if(Input.GetKey(KeyCode.LeftShift) || Input.GetKey(KeyCode.RightShift)){
        moveDirection = Vector3(0,0,Input.GetAxis("Vertical") * speedRun);
        run = true;
    }
    else{
        moveDirection = Vector3(0,0,Input.GetAxis("Vertical") * speed);
        walk = true;
    }
    
   if (Input.GetAxis("Vertical") > 0.1)
       GetComponent.<Animation>().CrossFade ("walk");
   else
      GetComponent.<Animation>().CrossFade ("idle");
      
      
    moveDirection = transform.TransformDirection(moveDirection);
      
    //rotation du personnage
    transform.Rotate(Vector3(0,Input.GetAxis("Horizontal") * speedRotate * deltaTime,0));
      
    //Gravity
    moveDirection.y -= gravity;
      
    //Deplacement du Character Controller
    controller.Move(moveDirection * deltaTime);
    
    if(Input.GetKey(KeyCode.Space) && isFalling == false)
    {
    GetComponent.<Rigidbody>().velocity.y = jumpH;
    isFalling = true;
    
    }

 
}

function OnCollistionStay ()
 {
 isFalling = false;
 
 }
Utilisez les balises code SVP (bouton <>-<>). Merci

Merci d'avance pour votre aide !
Dernière édition par Helias le 14 Avr 2016 21:10, édité 1 fois.

Avatar de l’utilisateur
Iwa
Messages : 1131
Inscription : 25 Avr 2012 16:20
Contact :

Re: Problème avec le saut et le "run"

Message par Iwa » 14 Avr 2016 10:34

Hello,

je m'y connais pas du tout au niveau des forces mais j'ai une question :

Code : Tout sélectionner

GetComponent.<Rigidbody>().velocity.y = jumpH;
C'est normal le . après GetComponent?

Sinon le tout premier lien que je viens de trouvé en tapant jump on space key unity :

http://answers.unity3d.com/questions/34 ... cript.html

Je pense que ça répond à ta question :)
"N'est stupide que la stupidité Monsieur..." - Forest Gump
... sauf si tu lis pas ça :)

Si tu as tout ce qu'il te faut, merci de penser à basculer ton sujet en [RESOLU] en éditant ton tout premier post ;)

Avatar de l’utilisateur
boubouk50
ModoGenereux
ModoGenereux
Messages : 6221
Inscription : 28 Avr 2014 11:57
Localisation : Saint-Didier-en-Bresse (71)

Re: Problème avec le saut et le "run"

Message par boubouk50 » 14 Avr 2016 10:37

Je pense que c'est parce que tu mélanges un peu tout entre translate et velocity sans réelle concordance entre eux.

Code : Tout sélectionner

moveDirection.y -= gravity; //A vérifier, mais comme ton perso possède un rigidbody, il est déjà soumis à la gravité, pas besoin de la rajouter.
      
    //Deplacement du Character Controller
    controller.Move(moveDirection * deltaTime);
    
    if(Input.GetKey(KeyCode.Space) && isFalling == false)
    {
    	GetComponent <Rigidbody>().velocity.y = jumpH; //tu changes la vélocité, mais est-elle suffisante pour contrer la gravité? Et quand bien même, tu devrais utiliser AddForce () pour donner une impulsion.
    	isFalling = true;
    }
Et aussi parce que tu ne respectes pas les conditions d'appels de la fonction OnCollisionStay ()

Code : Tout sélectionner

function OnCollisionStay(collisionInfo : Collision) //Attention à l'Orthographe!!! tu as écrit OnCollistionStay () et la function n'a pas les bons parametres!
 {
	 isFalling = false;
 }
@Iwa: deuz
"Ce n'est pas en améliorant la bougie, que l'on a inventé l'ampoule, c'est en marchant longtemps."
Nétiquette du forum
Savoir faire une recherche
Apprendre la programmation

Helias
Messages : 22
Inscription : 14 Avr 2016 10:16
Contact :

Re: Problème avec le saut et le "run"

Message par Helias » 14 Avr 2016 10:41

D'accord ! Merci pour vos réponses ! Je vous dis si ça fonctionne, merci encore :)

Helias
Messages : 22
Inscription : 14 Avr 2016 10:16
Contact :

Re: Problème avec le saut et le "run"

Message par Helias » 14 Avr 2016 10:53

Rien ne se passe, dès que j'appuie sur la barre espace le personnage ne réagis pas...

Code : Tout sélectionner

if(Input.GetKey(KeyCode.Space) && isFalling == false)
    {
       GetComponent.<Rigidbody>().velocity.y = jumpH; //tu changes la vélocité, mais est-elle suffisante pour contrer la gravité? Et quand bien même, tu devrais utiliser AddForce () pour donner une impulsion.
       isFalling = true;
    }

Moi 1971
Messages : 727
Inscription : 29 Sep 2015 13:38

Re: Problème avec le saut et le "run"

Message par Moi 1971 » 14 Avr 2016 10:59

Rajoutes des debug.log...

Code : Tout sélectionner

if(Input.GetKey(KeyCode.Space) && isFalling == false)
    {
       Debug.Log("Dans le Saut : jumpH = "+jumpH);
       GetComponent.<Rigidbody>().velocity.y = jumpH; 
       isFalling = true;
    }else if (Input.GetKey(KeyCode.Space)) Debug.Log("Pas dans le Saut : isFalling = "+isFalling);
    

Helias
Messages : 22
Inscription : 14 Avr 2016 10:16
Contact :

Re: Problème avec le saut et le "run"

Message par Helias » 14 Avr 2016 11:04

d'accord j'essaie. Merci ! :)

Avatar de l’utilisateur
boubouk50
ModoGenereux
ModoGenereux
Messages : 6221
Inscription : 28 Avr 2014 11:57
Localisation : Saint-Didier-en-Bresse (71)

Re: Problème avec le saut et le "run"

Message par boubouk50 » 14 Avr 2016 11:05

As tu aussi corrigé OnCollisionStay ()?
"Ce n'est pas en améliorant la bougie, que l'on a inventé l'ampoule, c'est en marchant longtemps."
Nétiquette du forum
Savoir faire une recherche
Apprendre la programmation

Helias
Messages : 22
Inscription : 14 Avr 2016 10:16
Contact :

Re: Problème avec le saut et le "run"

Message par Helias » 14 Avr 2016 11:07

C'est bizarre, il me coche les deux ... Je ne comprend pas réellement pourquoi ...

Helias
Messages : 22
Inscription : 14 Avr 2016 10:16
Contact :

Re: Problème avec le saut et le "run"

Message par Helias » 14 Avr 2016 11:07

boubouk50 a écrit :As tu aussi corrigé OnCollisionStay ()?
Oui je l'ai fais :

Code : Tout sélectionner

#pragma strict
  
//public variables
var speed:float;
var speedRun:float;
var speedRotate:float;
var gravity:float;
var jumpH = 8f;
var isFalling = false;
  
//private variables
private var controller:CharacterController;
private var moveDirection:Vector3;
private var deltaTime:float;
private var characterContent:Transform;
private var walk:boolean;
private var run:boolean;
  
function Start () {
  
    controller = GetComponent("CharacterController");
    characterContent = transform.Find("Perso");
}
  
function Update () {
  
    //Cadence du temps
    deltaTime = Time.deltaTime;
    
    
    //Deplacements Haut/bas
    if(Input.GetKey(KeyCode.LeftShift) || Input.GetKey(KeyCode.RightShift)){
        moveDirection = Vector3(0,0,Input.GetAxis("Vertical") * speedRun);
        run = true;
    }
    else{
        moveDirection = Vector3(0,0,Input.GetAxis("Vertical") * speed);
        walk = true;
    }
    
   if (Input.GetAxis("Vertical") > 0.1)
       GetComponent.<Animation>().CrossFade ("walk");
   else
      GetComponent.<Animation>().CrossFade ("idle");
      
      
    moveDirection = transform.TransformDirection(moveDirection);
      
    //rotation du personnage
    transform.Rotate(Vector3(0,Input.GetAxis("Horizontal") * speedRotate * deltaTime,0));
      
    //Gravity
    moveDirection.y -= gravity;
      
    //Deplacement du Character Controller
    controller.Move(moveDirection * deltaTime);
    
  if(Input.GetKey(KeyCode.Space) && isFalling == false)
    {
       Debug.Log("Dans le Saut : jumpH = "+jumpH);
       GetComponent.<Rigidbody>().velocity.y = jumpH; 
       isFalling = true;
    }else if (Input.GetKey(KeyCode.Space)) Debug.Log("Pas dans le Saut : isFalling = "+isFalling);
   

 
}

function OnCollisionStay(collisionInfo : Collision) //Attention à l'Orthographe!!! tu as écrit OnCollistionStay () et la function n'a pas les bons parametres!
 {
    isFalling = false;
 }

Verrouillé

Revenir vers « (Js) Javascript »