Bonjour à tous !
BAC ou pas, j'avance quand même un petit peu !
Voici donc les portes ouvrables !
C'est un peu plus simple à faire que dans le MOHAA original.
Pour créer une porte, il suffit de la placer dans l'éditeur à l'endroit où on la veut, via un clic droit dans la vue 2D puis "Portes" (on prend celle qu'on veut). La porte placée est celle en position close. Via l'angle, on ajuste le coté de la poignée (droite ou gauche en regardant la porte). La paire clef/valeur #Inverted/1 permet de dire que l'ouverture est inversée: par défaut, la porte s'ouvre du coté pointé par la flèche de l'angle.
Lorsque l'on rejoint le jeu, ce dernier va compiler les portes qui sont présentes dans la map (cela permet de rajouter aisément des portes: il suffit de les spawner comme des objets normaux avant l'initialisation du jeu). Dans la compilation, il va définir la direction de la porte ("l'angle" horizontal de la porte quand elle est fermée), il calcul le sens d'ouverture de la porte, et place alors l'axe de rotation suivant ce sens (on n'a plus un axe de rotation au centre d'un des bords de la porte, mais un axe décalé, qui évite à un morceau de la porte de traverser le mur lors de la rotation). Il décroche ensuite la porte du mur si ce dernier est légèrement imbriqué dans notre porte, puis il va la recaler correctement dans l'angle de l'embrasure. Il compile alors l'ouverture de la porte, et définit l'angle maximal avec lequel la porte peut s'ouvrir.
L'initialisation de la porte est alors terminée !
Le trait bleu indique l'angle dans MOHRadiant, le trait rouge donne la direction de la porte lorsqu'elle est fermée, et le trait blanc donne l'angle d'ouverture maximal de la porte (le point à l'intersection de la porte close et du trait blanc sera déplacé jusqu'au bout de ce trait blanc lorsque la porte est totalement ouverte).
Lorsque l'on ouvre la porte, si la poussée n'est pas trop élevée, la poignée est automatiquement tournée, puis la porte s'ouvre pendant que la poignée remonte (la porte ne s'ouvre pas tant que la poignée n'est pas totalement descendue, cela implique un décalage entre le moment où vous demandez l'ouverture de la porte via une touche et le moment où la porte est effectivement ouverte).
Si la porte est ouverte trop violemment, elle va rebondir sur le premier obstacle qui e trouve derrière elle. Lorsque la porte est dans un mouvement de fermeture (apres un rebond ou si le mouvement de fermeture est ordonné par un joueur), il existe deux cas différents quand la porte touche le loquet de fermeture: si elle n'a pas assez d'élan, elle va rebondir et entamer un mouvement d'ouverture; si elle a assez d'élan, elle se fermera.
Mais on peut briser le loquet de fermeture en ouvrant la porte suffisamment fort! A ce moment-là, la porte ne pourra plus se refermer, et si on essaye, elle rebondira. Le loquet peut être brisé par explosion (en fait le souffle de l'explosion simule une ouverture trop forte); ou encore, il peut être brisé par balle.
Si une porte a un loquet brisé, il suffira de la pousser pour l'ouvrir (si on la pousse en marchant, elle s'ouvre doucement, si on la pousse en petite course, elle s'ouvre normalement, et si on la pousse en sprint, elle s'ouvre à la volée, dans ce cas, veillez à ne pas vous la reprendre dans le pif si elle rebondie!). Une porte fermée (non-verrouillée) devra être ouverte en appuyant sur la touche "utiliser". La vitesse du mouvement du joueur lors de cette ouverture (mode marche / petite course / sprint) donnera la vitesse d'ouverture (entrebâillement / ouverture normale / ouverture à la volée).
Questions?! Remarques?!