Unity 3D. Gestion des personnages-3. Tutoriel 22

Dernière partie de la série de tutoriels de gestion de personnages. Cette fois ci, je passe aux choses sérieuses en vous expliquant comment déplacer et animer le personnage par javascript.
Après ça, si vous serez capable de créer votre propre Uncharted, si, si 😉

Le script utilisé dans le tutoriel :

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
var Ouvrier :GameObject;
 
var speed=4.0;
var jumpSpeed=8.0;
var gravity=20.0;
var rotationSpeed=50.0;
private var moveDirection=Vector3.zero;
 
function Start(){
	Ouvrier.animation.Stop();
	var idle=Ouvrier.animation["idle"];
	idle.wrapMode=WrapMode.PingPong;
 
	var walk=Ouvrier.animation["walk"];
	walk.wrapMode=WrapMode.Loop;
 
	var jump=Ouvrier.animation["jump"];
	jump.wrapMode=WrapMode.Clamp;
 
	idle.layer=-1;
	walk.layer=-1;
}
 
function FixedUpdate(){
		var controller:CharacterController=GetComponent(CharacterController);
 
		if (controller.isGrounded){
			var newRotation=Input.GetAxis("Horizontal")*rotationSpeed;
			transform.Rotate(0,newRotation*Time.deltaTime,0);
			//--------------------------------------------------------------------
			moveDirection=Vector3(0,0,Input.GetAxis("Vertical"));
			moveDirection=transform.TransformDirection(moveDirection);
			moveDirection*=speed;
			//----------------------------------------------------------------------
			if (Input.GetAxis("Vertical") && controller.isGrounded){
				Ouvrier.animation.CrossFade("walk");
				}else
				{
					Ouvrier.animation.CrossFade("idle");
				}
			if (Input.GetButton("Jump")){
				moveDirection.y=jumpSpeed;
				Ouvrier.animation.CrossFade("jump");
				}
 
			}
 
 
		moveDirection.y-=gravity*Time.deltaTime;
		controller.Move(moveDirection*Time.deltaTime);
	}
avatar

krys64

bla bla bla

Vous aimerez aussi...

9 réponses

  1. avatar Antidote dit :

    Bonjour krys,

    J’ai splité une animation de plusieurs persos et un objet en 4 parties (idle, part1, part2, part3) et déclenche la lecture de l’animation par les touches f1, f2, f3. Les persos restent bien synchro mais pas l’objet, il se déclenche plus rapidement et se désynchronise.
    As-tu une idée d’où cela vient ?

    Antidote

  2. avatar krys64 dit :

    Non faudrais voir ton projet dans un webplayer par exemple

  3. avatar GuyTina dit :

    Bonjour.

    Tres serieux…et bien expliqué…

    Vous avez 17 fps?

    Je vous remercie.

    Cordialement.

  4. avatar JoeRod dit :

    Salut,merci pour ce tuto

    par contre il effectue un moonwalk le personnage quand on recule.
    Quel est la commande pour jouer l’animation a l’envers ,svp?
    merci

  5. avatar db22 dit :

    Bonjour avant tout super tuto Merci beaucoup , j’apprends tout les jours un peu plus et j’adore !
    J’ai un souci que je viens juste de remarqué la camera systeme wo fonctionne très bien mes animes aussi …Bien que j’aimerais en ajouter ^^
    Mais quand j’appuie sur les deux boutons de la souris
    en même temps  » se qui m’est arrivé par hasard  »
    et sur la touche avancé,le personnage avance dans les aires et traverse les mures … Sympa pour finir le jeux rapidement , mais y a t’il une solution… Bonne continuation et j’espère que l’on pourra avoir une suite un de ses 4 , pour ajouter des animations 😉
    a bientôt.

  6. avatar Fabriely dit :

    Bonjours Krys64 j’avais une questions qui touche les scripts FPS j’aurais besoin de savoir comment mettre comme touche de déplacement Z;Q;S;D.

    Merci pour tous ces tutoriels Gratuits et bien détailler !

    Fab

  7. avatar Chrysagon dit :

    Bonjour à tous et un grand Merci à Krys pour ses supers tutos qui me permettent à moi et à bien d’autres de progresser sous Unity.
    En suivant la logique du script que tu décris, j’ai essayé de rajouter une autre animation (un coup de poing) déclenché par une autre touche. Je suis plutôt nouveau en JavaScript et j’ai dû faire des erreurs car cela ne fonctionne pas. 1 : la présence du code fait que le personnage reste animé mais reste sur place, et rien ne se passe lorsque j’appuie sur la touche voulue (ici keypad 0). Voici le code que j’ai inséré :

    var punch=Personnage.animation[« punch »];
    punch.wrapMode=WrapMode.Clamp;
    dans le function Start (je pense que ça c’est ok)

    Plus bas :
    if (Input.GetButton(« KeyCode.Keypad0 »)){
    Personnage.animation.CrossFade(« punch »);
    }
    Je le rappelle, je suis débutant et je doit passer à côté de quelque chose de super simple…
    Merci à tous ceux qui auraient une idée pour corriger le problème !

  8. avatar nathan dit :

    Hello merci pour ton script ! je suis en trein de suivre ton tuto sur la gestion des personnages !

    Mais quand je copie colle le script, sur MainCamera je n’est aucune variable ! j’ai que WowCamera (script) !

    Je m’apperçoi aussi que dans la console ENORMEMENt d’erreur comme un oublie de ; a un ligne alros que il y en a un !

    Je suis perdu !
    HELP

  9. avatar houcini hamza dit :

    je ne vois pas la vidéo sur la page mais seulement le script
    j’ai changé de navigateur et désactiver AdBlock mais y’a pas de moyen

Laisser un commentaire

Votre adresse de messagerie ne sera pas publiée. Les champs obligatoires sont indiqués avec *

Ce site utilise Akismet pour réduire les indésirables. En savoir plus sur comment les données de vos commentaires sont utilisées.