{EPITECH} CSFML: Faire de meilleurs sauts ?

in #epitech7 years ago (edited)

image.png

À epi, on viens souvent me demander comment je fais pour avoir des saut "en cloche". C'est très simple à faire, mais parfois long à expliquer en fonction de votre code et de votre avancée. Je met donc à votre disposition un petit guide pour vous aider !

1. Le main()

Pour commencer, un petit main d'exemple (il y manque des choses et les valeurs sont des exemples) :
image.png

  • clock_restart(clock) equivalent CSFML :
    sfClock_restart(clock).micoseconds / 1000000.f

2. La fonction update()

Dans cette fonction, vous allez mettre à jour tout ce qui est nécessaire, en fonction du temps. Dans cet exemple, je ne vaise mettre que ce qui concerne les mouvement.
image.png
Ici la position du personnage est modifiée selon sa vitesse du personnage et le temps écoulé depuis la dernière frame. La vitesse est aussi modifiée, afin d'avoir cet effet "cloche".
Nous limitons également les déplacements du personnage avec la fonction gestion_hitbox(), pour pas qu'il ne sorte pas des limites, à vous de définir ces limites.
Puis nous lui appliquons sa nouvelle position.

3. Les events

Pour que le saut ait lieu, il faut donner une valeur négative à la vitesse. Voici donc un brouillon de gestion des events.
image.png

4. Les hitbox

Dans la fonction update, une gravité simplifiée est gérée. Si vous souhaitez que votre personnage ne puisse pas passer au travers du sol, ou d'autre objets, vous devez gerer des hitbox. Dans cet exemple, je ne vais le faire que pour le sol :
image.png
Vous pouvez remarquer que je n'ai pas simplement définit la position du personnage, mais que j'ai également réinitialisé sa vitesse. Celle-ci s'incrémentant en continu dans la fonction update(), il viendra un moment où elle sera tellement importante que vous ne pourrez plus sauter, ou bien que votre personnage traversera votre sol.

Merci d'avoir suivit ce petit guide ! S'il vous a plus ou vous a été utile, vous pouvez mettre un petit vote !
Si vous avez des questions, n'hésitez pas à me les poser en commentaire, ou irl !

Coin Marketplace

STEEM 0.24
TRX 0.22
JST 0.037
BTC 98445.47
ETH 3425.83
USDT 1.00
SBD 3.41