[Résolu]Problème de gravité avec CharacterController

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
Pjarcos78
Messages : 48
Inscription : 06 Jan 2015 19:33

[Résolu]Problème de gravité avec CharacterController

Message par Pjarcos78 » 08 Sep 2015 13:15

Bonjour tout le monde,
Je suis encore nouveau dans Unity3d, j'ai donc encore du mal avec certaines fonctions.
J'ai donc un problème avec le CharacterController :
Tout fonctionne parfaitement : les déplacements, les collisions et les animations sont fluides mais lorsque je veux mettre de la gravité comme expliqué sur ce topic :

Code : Tout sélectionner

moveDirection.y -= gravity * Time.deltaTime;
Elle fonctionne, le personnage vas vers le sol mais il vibre énormément de bas en haut !!

Quelqu'un aurait-il une solution ? (Si besoin est, je peux mettre plus de code)

Merci d'avance,
Pjarcos78
Dernière édition par Pjarcos78 le 21 Sep 2015 16:53, édité 1 fois.

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

Re: Problème de gravité avec CharacterController

Message par Iwa » 08 Sep 2015 16:26

Sur quel collider te trouves-tu? Un simple plan ou quelque chose de plus complexe avec beaucoup d'aspérités?

Pourrais-tu faire un screenshot de tes réglages de ton Character Controller? Il y a peut-être certains réglages trop sensibles ce qui expliquerait tes tremblements.

Qu'utilises-tu comme scripts pour déplacer ton personnage? As-tu fait des modifications dessus?
"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
@RLG
Messages : 367
Inscription : 17 Jan 2015 00:13
Localisation : Rennes

Re: Problème de gravité avec CharacterController

Message par @RLG » 08 Sep 2015 16:45

Tu as essayé d'ajouter ça avant d'appliquer de la gravité ?

http://docs.unity3d.com/ScriptReference ... unded.html

Si ton Player est déjà sur le sol, pas besoin de le faire descendre plus ;)
Everything happens for a reason. Sometimes the reason is that you're stupid and make bad decisions.

Pjarcos78
Messages : 48
Inscription : 06 Jan 2015 19:33

Re: Problème de gravité avec CharacterController

Message par Pjarcos78 » 09 Sep 2015 20:12

Merci beaucoup à tous pour vos réponses,
@ Iwa > Je n'est pas beaucoup de temps ce soir, j'enverrai un screenshot demain. Quant au terrain, c'est un terrain crée avec unity3d pour faire des test donc pour l'instant avec seulement des murs et une bosse au milieu.

@ @RLG > Oui j'ai appliqué cette technique, cependant, elle n'a fait que légèrement atténuer le vibrement !

A demain (j'enverrai un screenshot), j'espère avoir aidé dans les recherche pour m'aider (bizarre cette phrase ;-) ),
Pjarcos78

Pjarcos78
Messages : 48
Inscription : 06 Jan 2015 19:33

Re: Problème de gravité avec CharacterController

Message par Pjarcos78 » 10 Sep 2015 08:33

Voilà le screenshot tant attendu !

Je peux aussi envoyer le code avec lequel je le déplace si besoin.

Avatar de l’utilisateur
Max
Messages : 8772
Inscription : 30 Juil 2011 13:57
Contact :

Re: Problème de gravité avec CharacterController

Message par Max » 10 Sep 2015 08:44

Pjarcos78 a écrit :Je peux aussi envoyer le code avec lequel je le déplace si besoin.
cela serait bien oui.
Image
Pas d'aide par MP, le forum est là pour ça.
En cas de doute sur les bonnes pratiques à adopter sur le forum, consulter la Charte et sa FAQ

Pjarcos78
Messages : 48
Inscription : 06 Jan 2015 19:33

Re: Problème de gravité avec CharacterController

Message par Pjarcos78 » 11 Sep 2015 18:39

Et voilà le code :

Code : Tout sélectionner

//Public var
var speed:float; //2
var speedRun:float; //4
var speedRotate:float; //80
var gravity:float; //environs 10 (selon les tests)
var jumpSpeed:float; //5

//Private var
private var controller:CharacterController;
private var moveDirection:Vector3;
private var deltaTime:float;
private var characterContent;
private var runAnim:boolean;

function Start () {

	controller = GetComponent("CharacterController");
	characterContent = transform.Find("roBot");
  
}

function Update () {

	//Cadence du temps par frame
	deltaTime = Time.deltaTime;
	runAnim = false; 
	
	//Si il touche le sol
	if(controller.isGrounded){
	
		//Deplacement Haut/Bas
		if(Input.GetKey(KeyCode.LeftShift) || Input.GetKey(KeyCode.RightShift)){
			moveDirection = Vector3(0,0,Input.GetAxis("Vertical") * speedRun);
			runAnim = true ;
		}
		else{
			moveDirection = Vector3(0,0,Input.GetAxis("Vertical") * speed);
		}
		
		//Gestion de l'animation
		if(Input.GetKey(KeyCode.UpArrow) || Input.GetKey(KeyCode.DownArrow)){
			//animation marche
			if(!runAnim){
				characterContent.animation.CrossFade("loop_walk_funny", 0.2);
			}
			//animation course
			else{
				characterContent.animation.CrossFade("loop_run_funny", 0.2);
			}
		}
		//animation attente
		else{
			characterContent.animation.CrossFade("loop_idle", 0.2);		
		}
		//Saut 
		if(Input.GetKey(KeyCode.Space)){
			moveDirection.y = jumpSpeed;
			//animation du saut
			characterContent.animation.CrossFade("jump", 0.2);
		}	  
	}			
		
	//Changer sur l'axe local
	moveDirection = transform.TransformDirection(moveDirection);
	
	
	//Rotation du perso
	transform.Rotate(Vector3(0,Input.GetAxis("Horizontal") * speedRotate * deltaTime,0));
	
	//Gravité
	moveDirection.y -= gravity * deltaTime;
	
	//Deplacement du Character Controller
	controller.Move(moveDirection * deltaTime); 

}
J'espère avoir été util

Avatar de l’utilisateur
Max
Messages : 8772
Inscription : 30 Juil 2011 13:57
Contact :

Re: Problème de gravité avec CharacterController

Message par Max » 12 Sep 2015 11:11

as-tu essayé plutôt moveDirection.y -= gravity ; (donc sans le deltaTime).
Bizarre, perso si j’essaie d'appliquer une gravité, je ne la pondèrerais pas avec un 'deltatime', de plus j'aurais tendance à placer cela dans le FixedUpdate(), d'ailleurs ce qui est fait par les 'controlers' du StandardAsset
(question d'ailleurs, pourquoi n'emploies tu pas les codes natif standard d'un des deux 'controlers' proposés dans les standardAsset ? )
Image
Pas d'aide par MP, le forum est là pour ça.
En cas de doute sur les bonnes pratiques à adopter sur le forum, consulter la Charte et sa FAQ

Pjarcos78
Messages : 48
Inscription : 06 Jan 2015 19:33

Re: Problème de gravité avec CharacterController

Message par Pjarcos78 » 19 Sep 2015 14:13

Désolé pour cette réponse tardive j'ai du mal à suivre avec la rentrée scolaire,
J'avoue ne pas avoir pensé à retirer deltaTime ni à regarder dans le StandardAsset pour le modifier :? : encore une erreur de débutant, je les cumule ces temps-ci :oops:
Je ne connaissais pas la fonction FixedUpdate()
Je test ce WE et je vous fais par de mes avancées

Pjarcos78

Pjarcos78
Messages : 48
Inscription : 06 Jan 2015 19:33

Re: Problème de gravité avec CharacterController

Message par Pjarcos78 » 21 Sep 2015 16:53

Et oui le problème était bien dut à Time.deltaTime.
En l'enlevant, j'ai aussi enlevé les vibrations !
Merci énormément à tous !
Pjarcos78

Verrouillé

Revenir vers « (Js) Javascript »