Créer un objet Karma

Écrit le 01/01/2004 par RC_KraZyKiller
Dernière mise à jour : 06/04/2006

Introduction

Le Karma Engine est le moteur qui gère la physique dans UT2003 , il est utilisé par exemple pour rendre réaliste les rebonds des grenades ou des projectiles du Flack. Nous allons voir dans ce tutorial commment créer un objet qui bouge ou qui tombe de façon réaliste lorsqu'on lui tire dessus grace aux propriétées du Karma.

Création d'un objet Karma : Cube Simple

Un objet karma, est simplement un static mesh auquel on a rajouté des propriétés de Collision.
Commençons par créer un static mesh, pour l'instant cubique, que l'on nomme "Caisse". Dans le Static Mesh Browser, cliquez sur View/Show Collision :

http://www.game-lab.com/images/tuts/unreal_objet_karma/karmatut1.jpg

La caisse n'ayant aucune collision, elle s'affiche normalement :

http://www.game-lab.com/images/tuts/unreal_objet_karma/karmatut2.jpg

Ensuite, comme je l'ais dit précedemment, il faut lui rajouter cette fameuse collision. Pour ceci, cliquez sur Collision Tools/Fit 6-DOP (BOX).

http://www.game-lab.com/images/tuts/unreal_objet_karma/karmatut3.jpg

On peut voir apparaitre, un squelette fil de fer rouge , qui représente la collision . Notre objet étant simple, ce squellette épouse bien les formes.

http://www.game-lab.com/images/tuts/unreal_objet_karma/karmatut4.jpg

Création d'un objet Karma : Objet plus complexe

Mais si vous voulez créer des objets plus complexes, cette méthode ne suffit plus car en général on ne souhaite pas qu'ils se comportent comme des cubes. Prenons l'exemple d'un static mesh en forme de petite table, si l'on utilise la méthode précedente voilà ce qu'on obtient :

http://www.game-lab.com/images/tuts/unreal_objet_karma/karmatut5.jpg

Le résultat est que si l'on tire entre les pieds, la table va bouger, ce qui n'est pas vraiment réaliste ...
Pour faire en sorte que la collision soit de la forme de la table, insérez la table dans la map, puis faites clic-droit dessus =>Convert to brush .

http://www.game-lab.com/images/tuts/unreal_objet_karma/karmatut6.jpg

Si le static mesh avait dejà une collision, vous pouvez avoir un message vous demandant de confirmer si vous voulez le remplacer, cliquez sur OUI . Vous pouvez alors voir que la nouvelle collision correspond bien au static mesh :

http://www.game-lab.com/images/tuts/unreal_objet_karma/karmatut7.jpg

Insertion de l'Objet karma

Notre static mesh est prêt à être inséré dans la map. Voici une petite salle que j'ais faite pour l'exemple :

http://www.game-lab.com/images/tuts/unreal_objet_karma/karmatut8.jpg

Pour vous aider vous pouvez afficher aussi la collision dans la vue 3D, en faisant clic-droit sur la barre d'outil grise/View/Cocher Show Collision (cette étape n'est pas indispensable, mais aide pour une meilleur apréhension).

http://www.game-lab.com/images/tuts/unreal_objet_karma/karmatut9.jpg

Ensuite, comme pour un static mesh normal, clic-droit à l'endroit où vous voulez l'ajouter, mais dans le menu déroulant au lieu de choisir add static mesh, cliquez sur Add Karma Actor :

http://www.game-lab.com/images/tuts/unreal_objet_karma/karmatut10.jpg

L'objet karma est rajouté comme un static mesh, on va juste modifier quelques propriétés :

http://www.game-lab.com/images/tuts/unreal_objet_karma/karmatut11.jpg

- bHighDetailOnly  : mettre Faux (False) s'il s'agit d'un élément important dans le gameplay, mais si c'est juste un peu de décoration, laisser à Vrai (True) pour que seules les grosses configs puissent l'animer et de façon à limiter les ralentissement chez les petites configs...

Tout les autres paramètres modifient le comportement de l'objet karma, a vous de les tester, pour qu'il corresponde le plus possible à vos besoin. Je conseilles tout de même, de mettre un peu de Kfriction (0.1), qui est le frottement, car sinon vos objets risquent de glisser comme sur de la glace :-/

Voilà, notre objet karma est fini, il ne reste plus qu'à le tester. Attention : Il ne bouge que lorsqu'on lui tire dessus et pas si on essaie de le pousser... De plus le moteur a l'air de considérer une corniche comme un obstacle, ce qui fait qu'il faudra tirer sur un objet karma, pas mal de temps avant qu'il tombe. A moins de le placer directement à cheval sur la corniche, le moteur considérant que l'obstacle est dejà franchi :-).

Resultat :

http://www.game-lab.com/images/tuts/unreal_objet_karma/Chute-Caisse.gif

Par RC_KraZyKiller - thibouf@hotmail.com