Je viens aujourd'hui avec un nouveau problème, je travaille toujours sur un jeux de plateforme. Une balle représente mon joueur. J'ai mit un script de déplacement qui marche mais qui me dérange énormément dans le sens ou lorsque j'utilise un Addforce sur ma balle, celle-ci met énormément de temps a s'arrêter. Enfait, je pense même qu'elle ne s'arrête jamais, du moins pas tant que je n'utilise pas ma flèche dans le sens opposé pour freiner la course.
Mon désir est que lorsque le joueur n'appuie plus sur le flèches directionnelles, le balle s'arrête progressivement en quelques secondes
Après plusieurs essais et des recherches infructueuse sur le net, j'ai un code qui en effet arrête la balle mais l'arrête net lorsque le joueur n'appuie plus sur la touche. Hors cet arrêt et tout de même très brutal, absolument pas progressif. Je remarque aussi que alors que les réglage du RigidBody et de la Physique sont les mêmes, la balle réagit différemment d'une scène a l'autre.
De plus, cela a fait bugguer ma fin de niveau. J'ai une porte que le joueur doit traverser, et lorsqu'il la traverse j'utilise un Addforce sur la balle pour la propulser a travers la porte et ainsi empêcher que le joueur passe la porte et revienne en arrière.
Voici mon code de déplacement de la balle :
Code : Tout sélectionner
#pragma strict
// Boolean
var Saut : boolean = false; // Deviens true, quand le balle est en l'air.
var Push : boolean = false;
var UnPush : boolean = true;
// Variables
static var vitesseDeplacement = 20.0;
var vitesseMaxA = 40;
var vitesseMaxB = 22;
// Component
var rb: Rigidbody;
function Start(){
UnPush = true;
Push = false;
rb = GetComponent.<Rigidbody>();
timerScript.tempsUp = false;
}
function StopBalle(){
rb.velocity = Vector3(0,-1,0); // J'ai du metre (0,-1,0) sinon la balle tombe très lentement en sortant du plateau de jeux.
rb.angularVelocity = Vector3.zero;
}
function Update(){
if(Input.GetButtonDown("Submit") && IsGrounded.IsGrounded == true && timerScript.tempsUp == false && vitesseDeplacement < vitesseMaxA){
Push = true;
UnPush = false;
IsGrounded.IsGrounded = false; //Variable d'un autre Script qui deviens true lorsque j'appuie sur la touche ENTRER
GetComponent.<Rigidbody>().AddForce(0, vitesseDeplacement * 7, 0);
}
if(Input && timerScript.tempsUp == false && IsGrounded.IsGrounded == true && vitesseDeplacement < vitesseMaxB){
GetComponent.<Rigidbody>().AddForce(0,0, Input.GetAxis("Vertical") * 0.45 * vitesseDeplacement);
GetComponent.<Rigidbody>().AddForce(Input.GetAxis("Horizontal") * 0.45 * vitesseDeplacement, 0, 0);
Push = true;
UnPush = false;
}
if(IsGrounded.IsGrounded == false){
Saut = true;
}
if(IsGrounded.IsGrounded == true){
Saut = false;
}
if(Input.anyKey == false){
UnPush = true;
Push = false;
}
if(UnPush == true && Saut == false){
StopBalle();
}
}
Merci d'avance de vos réponses.
Creamydelux