Je suis en train de réaliser un petit Flappy_bird avec Unity pour me faire un peu la main, mais je n'arrive pas à "contrôler" les déplacements de mon personnage. Il va bien de gauche à droite automatiquement grâce à un "speed * Time.deltaTime;" et il va bien de bas en haut en appuyant sur "espace" grâce à un jeu de force. Le soucis c'est que si je mitraille la touche "espace", le personnage va s'élever relativement haut. Et à vrai dire, avec le nombre de tentative que j'ai faite je pense que mon petit Flappy doit aujourd'hui être familier avec Mars
Du coup ce qu'il faut c'est qu'il puisse toujours bouger et sauter, mais qu'il ne puisse sauter que jusqu'à un certain point.
J'ai regardé dans l'interface du rigidbody mais on ne peut freezer les rotations et les positions du personnage qu'au lancement, on ne peut pas le paramétrer pour qu'il en bloque une tout en lui laissant la possibilité de bouger. Du coup j'ai essayé dans le script mais mes... euh... "compétences" en javascript commencent à me faire défaut
Est-ce que vous auriez une idée de comment limiter les déplacements du personnage sur l'axe des Y, tout en laissant le choix dans l'onglet "inspector" de pouvoir modifier ces données?
Merci d'avance
Devalnos
PS1: J'utilise la version 4.3.1 de Unity
PS2: Voici le script du Flappy
Code : Tout sélectionner
var life: int;
var speed : float;
public var jumpForce : float;
static var score: int;
function Update () {
transform.Translate(speed * Time.deltaTime, 0, 0, Space.World); //permet d'avancer sans appuyer sur une touche
if (Input.GetKeyDown(KeyCode.Space)) {
jump();
}
}
function jump() {
rigidbody.AddForce(new Vector3(0, jumpForce, 0)); // Donne la force du saut
}
function OnTriggerEnter (other : Collider){
if(other.CompareTag("Mur")){
life--;
if (life<= 0) {
Destroy(gameObject );
Application.LoadLevel("Game_over");
}
}
if(other.CompareTag("Trigger")){
score ++;
}
}
function OnGUI () {
GUI.Label(Rect(0,20,100,100), "Pipe:" + score);
}