Script de déplacement d'un mannequin, pnj avec animation bloquée.
D'abord quelques explications sur les mannequins. Le fait que leur animation soit bloquée empêche tout mouvement de par eux-même. Mais rien n'empêche de lui donné la position d'un autre objet.
Donc voici mon arme secrète, attention accrochez vous, prêt! partez!
1) Créer un nouveau MiscItem, donnez lui l'apparence que vous voulez.
Placez le dans le TESCS là ou votre mannequin doit être. Si possible enfouissez le dans le sol pour qu'il ne soit pas visible. Et de préférence un petit objet.
2) Le script du mannequin doit bloqué ses mouvements, mais ce devrait-être le cas, puisque c'est un PNJ statique.
3) Appliquer à ce MiscItem le script suivant :
Citation:
Citation
Begin _toto
short boucle
float posxpantin
float posypantin
short dirmove
short init
if ( init == 0)
set init to 1
set dirmove to 1
SetAtStart
endif
if ( dirmove == 1 )
MoveWorld x, 30
set boucle to ( boucle + 1 )
set posxpantin to GetPos x
set posypantin to GetPos y
"Armor Mannequin"->SetPos x, posxpantin
"Armor Mannequin"->SetPos y, posypantin
if boucle >= 200
set dirmove to -1
endif
endif
if ( dirmove == -1 )
MoveWorld x, -30
set boucle to ( boucle - 1 )
set posxpantin to GetPos x
set posypantin to GetPos y
"Armor Mannequin"->SetPos x, posxpantin
"Armor Mannequin"->SetPos y, posypantin
if boucle <= 0
set dirmove to 1
endif
endif
End _toto
short boucle
float posxpantin
float posypantin
short dirmove
short init
if ( init == 0)
set init to 1
set dirmove to 1
SetAtStart
endif
if ( dirmove == 1 )
MoveWorld x, 30
set boucle to ( boucle + 1 )
set posxpantin to GetPos x
set posypantin to GetPos y
"Armor Mannequin"->SetPos x, posxpantin
"Armor Mannequin"->SetPos y, posypantin
if boucle >= 200
set dirmove to -1
endif
endif
if ( dirmove == -1 )
MoveWorld x, -30
set boucle to ( boucle - 1 )
set posxpantin to GetPos x
set posypantin to GetPos y
"Armor Mannequin"->SetPos x, posxpantin
"Armor Mannequin"->SetPos y, posypantin
if boucle <= 0
set dirmove to 1
endif
endif
End _toto
Le non du script est générique.
"Armor Mannequin" est l'id du Pnj mannequin.
Explication : la boucle init, euh... initialise la position du MiscItem (SetAtStart), ainsi que la direction de départ qui ne doit jamais être 0.
Viens ensuite le test de la direction du mouvement, dans ce cas deux tests puisqu'il y a deux directions.
MoveWorld x, 30 déplace le MiscItem. A adapter en fonction de la rapidité.
set boucle to ( boucle + 1 ) une boucle de déplacement rapport au temps.
set posxpantin to GetPos x copie la position de l'objet dans une variable.
"Armor Mannequin"->SetPos x, posxpantin positionne le mannequin à la position de l'objet. (c'est ici la clef du mouvement)
Puis viens le test de la direction du mouvement, si il a dépassé la valeur le mouvement s'inverse, la variable dirmove est changé de signe.
Fin du mouvement X+
Test sur le mouvement X-, idem que plus haut sauf qu'il y a décrémentation des compteurs.
Fin du script.
Une dernière remarque, si vous avez enfoui le MiscItem dans le sol n'oublié pas de rajouté une variable poszpantin ainsi que son initialisation pour donner la bonne position en z du pantin. Normalement cela n'est pas nécessaire puisque c'est un Pnj qui se positionne automatique au niveau du sol suite au test de collision du jeu.
Sauvegardez et testez.
Résultat vous devriez avoir un mannequin cible qui se déplace gracieusement d'un coté puis de l'autre.
Bon tir au pigeon!