Translations of this page:

This is an old revision of the document!
—-

5. Les Acteurs

Le chapitre qui suit couvre les acteurs en général et traite aussi des détails de la création 2D - du sprite de l'acteur. Pour ceux qui sont intéressé par les acteurs 3D un chapitre appelé “Going 2.5D” y sera dédié, alors patience, nous y arriverons aussi.

Nous avons déjà vu quelques méthodes associé aux acteurs - Nous avons vu comment charger un acteur dans le jeu ou la scene courante, nous connaissons comment faire que notre acteur marche, parle, se position dans la direction à laquelle il fait face, etc… Mais regardons, à quoi ressemble Molly. Ouvrez le fichier data\actors\molly\molly.actor et de voir immédiatement que ce n'est pas un fichier de script - C'est un fichier de définition.

Divisons le en petits morceaux et expliquons l'ensemble du fichier:

; $EDITOR_PROJECT_ROOT_DIR$ ..\..\..\

Normalement dans les fichiers de définition de WME les lignes commençant par ; sont commentées. Notez que dans les commentaires de script :

(// or /* */) ne sont pas supportés dans les fichiers de définition et provoque des erreurs!

Mais cette ligne est spéciale et elle dis à WME à quel niveau nous sommes dans la structure de dossier ou en d'autres mots où est la racine du projet. Ceci est très important plus tard dans les fichiers de scene (si vous déplacez les scènes plus profondément dans les structure de dossiers, vous devrez modifier cette valeur ou votre scène ne fonctionnera pas).

Important: Les lignes dans les fichiers de définition ne se termine pas par des point-virgules!

ACTOR 
{

Notre bloc de données définissant un acteur commence par:

  NAME = "molly" 
  CAPTION="" 
  SCALABLE = TRUE 
  INTERACTIVE = FALSE 
  X = 400 
  Y = 460 
  SCRIPT="actors\molly\molly.script" 
 
  FONT = "fonts\outline_red.font"

NAME est le nom interne d'un acteur.
CAPTION est l’étiquette qui peut être utilisée , par exemple, dans game_loop.script pour afficher la légende de la même façon qu'avec les Entités (nodes).
SCALABLE peut être true ou false et défini si l'acteur affecté par les niveaux d’échelle de la scene ou par mise à l'échelle manuellement grâce à la méthode interne.

De plus on peut avoir:

ROTATABLE = TRUE/FALSE ce qui ferait que notre personnage serait affecté par les niveaux de rotation de la scène que nous avons vu déjà dans l'éditeur de Scène.
INTERACTIVE signifie que l'acteur est sensible à la souris. Si vous exécutez notre jeu dès maintenant et mettez le curseur de la souris sur Molly, le jeu ne réagit pas parce que INTERACTIVE est défini à FALSE. Si vous l'aviez changer pour TRUE vous auriez vu que Molly est une partie interactive de la scene.
X et Y sont les coordonnées initiale de l'acteur sur l'écran.
SCRIPT est le nom du fichier Script qui sera automatiquement attaché à l'acteur lors du chargement. vous pouvez avoir une multitude de ligne de script ici.
FONT est le fichier de font utilisé par la méthode actor.Talk que nous avons déjà utilisé.

Et il y a deux de plus :

SOUND_PANNING = TRUE/FALSE qui, s'il est réglé sur TRUE fera automatiquement un panoramique sonore de gauche à droite en fonction d'où il se trouve sur l'écran.
COLORABLE = TRUE/FALSE qui, s'il est réglé sur TRUE fera que l'acteur sera affecté par les régions décoration.

Avant d'aller plus loin, faisons un peu de théorie. Pour avoir un superbe acteur 2D dans notre scene, nous devons définir cinq jeux de base d'animations ( walk (Marcher), talk (Parler), idle (ralenti), turnleft (tourne à gauche), turnright (tourne à droite) ).

La documentation WME stipule clairement que: “…rappelez-vous que l'acteur est capable de marcher dans les huit directions, donc vous avez besoin de huit versions de chaque type d'animation pour les différentes directions. Si vous avez seulement quatre directions créées pour votre personnage, vous pouvez utiliser une animation pour plusieurs directions, mais le fichier de définition de l'acteur doit toujours les définir tous les 8. Par exemple, si vous avez une animation "personnage marche à gauche", vous pouvez l'affecter à la fois à "marcher à gauche" et "marcher haut gauche" ".

Mais regardons notre premier jeu d'animation appelé walk - Notez que le comportement a changé dans le nouveau WME (Avant c’était SPRITESET).

  ANIMATION 
  { 
    NAME       = "walk" 
 
    LEFT       = "actors\molly\ll\walk.sprite" 
    RIGHT      = "actors\molly\rr\walk.sprite" 
    UP         = "actors\molly\uu\walk.sprite" 
    DOWN       = "actors\molly\dd\walk.sprite" 
 
    UP_LEFT    = "actors\molly\ul\walk.sprite" 
    UP_RIGHT   = "actors\molly\ur\walk.sprite" 
    DOWN_LEFT  = "actors\molly\dl\walk.sprite" 
    DOWN_RIGHT = "actors\molly\dr\walk.sprite" 
  }

Comme vous voyez, vous assignez différents Sprites pour chacune des huit directions possibles. Et a ce sujet,Il y a une chose spéciale au sujet de l'animation de la marche - quand vous construisez votre animation d'acteur dans l'éditeur de sprite, vous avez à régler le paramètre "Move by" pour chaque image (frame) comme nous l’avons dit précédemment. Ceci définira à quelle vitesse le personnage bouge sur l'écran.

Le jeu de Sprites suivant s’appelle idle

  ANIMATION 
  { 
    NAME       = "idle" 
 
    LEFT       = "actors\molly\ll\stand.sprite" 
    RIGHT      = "actors\molly\rr\stand.sprite" 
    UP         = "actors\molly\uu\stand.sprite" 
    DOWN       = "actors\molly\dd\stand.sprite" 
 
    UP_LEFT    = "actors\molly\ul\stand.sprite" 
    UP_RIGHT   = "actors\molly\ur\stand.sprite" 
    DOWN_LEFT  = "actors\molly\dl\stand.sprite" 
    DOWN_RIGHT = "actors\molly\dr\stand.sprite" 
  }

Il n'y a rien de spécial au sujet de la marche au ralenti. Vous pouvez ajouter quelques effets sympa comme la respiration, traîner les pieds ou se gratter le nez.

les 2 jeux de sprite suivants s’appellent turnleft et turnright et à travers eux peut être réalisé un acteur qui se tourne réaliste. PAr defaut c'est juste un flip que nous connaissons dans les jeux plus vieux. Ils sont identiques, donc je vais afficher seulement turnleft.

  ANIMATION 
  { 
    NAME       = "turnleft" 
 
    LEFT       = "actors\molly\ll\turn.sprite" 
    RIGHT      = "actors\molly\rr\turn.sprite" 
    UP         = "actors\molly\uu\turn.sprite" 
    DOWN       = "actors\molly\dd\turn.sprite" 
 
    UP_LEFT    = "actors\molly\ul\turn.sprite" 
    UP_RIGHT   = "actors\molly\ur\turn.sprite" 
    DOWN_LEFT  = "actors\molly\dl\turn.sprite" 
    DOWN_RIGHT = "actors\molly\dr\turn.sprite" 
  }

Le dernier jeu est l'animation talk.

  ANIMATION 
  { 
    NAME       = "talk" 
 
    LEFT       = "actors\molly\ll\talk.sprite" 
    RIGHT      = "actors\molly\rr\talk.sprite" 
    UP         = "actors\molly\uu\talk.sprite" 
    DOWN       = "actors\molly\dd\talk.sprite" 
 
    UP_LEFT    = "actors\molly\ul\talk.sprite" 
    UP_RIGHT   = "actors\molly\ur\talk.sprite" 
    DOWN_LEFT  = "actors\molly\dl\talk.sprite" 
    DOWN_RIGHT = "actors\molly\dr\talk.sprite" 
  }

Nous pouvons définir plus d'un bloc talk! Si nous le faisons, WME joue alors de manière aléatoire les animations parler pendant qu'il parle ce qui le rend plus vivant. En plus de ça nous pouvons définir des positions de parler qui sera appelée par le paramètre spécial dans la commande Talk.

Si nous créons une animation spéciale et la nommons, par exemple, eyeroll,
If we created a special animation and name it for example eyeroll, we could then for a special line invoke the eyeroll.

So let's recap - by default if we call actor.Talk(“Hello, how is it goin? Blah blah blah”); all animations named talk are randomly played.

Full method is actor.Talk(Text, SoundFilename, Duration, TalkStances, TextAlignment)

Text – is the written line. So far we always used solely this parameter.
SoundFilename – this is in a way an obsolete parameter. We’ll see why when we get to the localization chapter, because in the latest engine versions, WME automatically chooses a correct filename to play according to string tab file. So if you’re going to use voiceovers, simply put null in there.
Duration is normally not used as well. Text is automatically synchronized to speech file. You can use null again.
TalkStances – here you can specify the order and stances, which are used for the speech. If this parameter is supplied you can choose only a subset of stances.
TextAlignment – defines the alignment of the written lines.

So our modified call could look like for example:

actor.Talk("Hello.",null,null,"eyroll"); which would make actor perform an eyeroll on this line.

As a side note - we’ve used always only variable actor for actor interaction, but it’s only a variable. So if I wanted to break this stereotype I can easily do the following:

in base.inc declare

global Peter;  
global Sally;

in game.script use our

Peter = Scene.LoadActor("path_to_peter.actor file"); 
Sally = Scene.LoadActor("path_to_sally.actor file"); 
 
Peter.GoTo(100,100); 
Sally.Talk("blahblahblah");

I think you’ve got my point here. But back to animations.

You can of course create also sprites for nonstandard animations (pickup, push, pull etc.) which will be then referenced from the scripts.

So we see that it’s not hard to create a brand new 2D actor, together with animations, provided we have a corresponding graphics. And now it’s time to discover some more usable methods for actors.

actor.PlayAnim(path_to_sprite) – plays an animation as defined in sprite file and wait until the animation is finished.
actor.PlayAnimAsync(path_to_sprite) – plays an animation as defined in actor file and immediately continue.
actor.Reset() – cancel current action actor is performing (talking, walking)
actor.TurnTo(object or direction) – makes actor turn either to an object’s direction as defined in Scene Edit or to directional constant.

Lastly you can override the default animations (for example run, swim or fly animation to replace "walk") and switch them using the actor.TalkAnimName, actor.IdleAnimName, actor.WalkAnimName, actor.TurnLeftAnimName and actor.TurnRightAnimName.

This book doesn’t surrogate WME documentation. There are other methods and attributes which can be used for our actors. So as I promised in the first chapter, I’ll include on closing relevant sections in WME documentation, where you can see the complete object description.

Contents→ Inside a game→ Actors - for the general description of actor
Contents → Scripting in WME → Script language reference → Actor object – for methods and attributes which can be used with the actor

 
fr/wmebook/ch5.1319056411.txt.gz · Last modified: 2011/10/19 22:33 by Anto0085
Recent changes RSS feed Creative Commons License Driven by DokuWiki