Hello !
Pour le rebond, Timorite a déjà répondu.
Pour la question du bond, si ça peux vous aider, voici le principe du mouvement balistique.
Prenons un exemple tout simple : un canon qui tire un boulet horizontalement. Notre boulet évolue dans un espace à deux dimension, mais nous pouvons séparer son déplacement en deux autres distinct, un sur l´axe des x et un sur l´axe des y. Il aura donc deux variables pour définir sa position : une x et une y. Pour trouver x, voici la "formule" :
position X (au temps t) = (Vitesse du boulet * t) + Position d´origine sur l´axe des x.
Note : on appelle ce type de déplacement un MRU, c.a.d. un mouvement rectiligne uniforme. Cela signifie en gros que la vitesse est constante (dans la réalité, il y aurait encore les forces de frotement, mais nous ferons abstraction).
Pour trouver Y, c´est un petit peu plus compliqué. En effet, cette fois le mouvement ne sera plus un simple MRU, mais un MRUA, c.a.d. un Mouvement rectiligne uniformément accéléré, car il existe une force sur l´axe des y qui accèlère l´objet vers le bas : la gravité.
Voici l´équation d Y :
position Y (au temps t) = (0.5*Gravité*(t^2)) + vitesse d´origine * t + position d´origine sur l´axe des y.
Cela devrait vous donner un joli mouvement balistique.
J´ai fait par hasard un test hier soir,un jeu tout simple pour vérifier qaue ça marche : Un pirate, sur une montagne, qui doit tirer sur un bateau (imobile) dans l´eau en bas. Ca fonctione bien
Pour indication, la gravité terrestre est de 9.81 Newton par KG.
Après, mais ceci n´est qu´une hypothèse, je suppose que pour déplacer un personnage, tu crées deux variables : une avec sa vitesse sur l´axe de x et une avec sa vitesse sur l´axe des y, et tu introduit ça dans les équation si dessous. Cela revient au même que de créer un vecteur de déplacement et de le projeter via la trigonométrie sur les axes x et y [ dans un cas orthonormé ].
Voilà, j´espère que vous avez compris.
Salut Qosimo.
Je vois que tu as sorti tes cours de physique. Je ne sais pas si ces formules peuvent être utiles dans l´élaboration d´un code, mais en tout cas ça explique bien le mouvement du projectile.
Hihi...
Ouai, c´est aussi ce que je me demande. Alors j´ai l´intention d´essayer ça un de ces jours... Je suis en vacances ces temps. Je vais essayer de créer un petit jeu genre Mario mais sans scrolling, juste sur un écran, avec un seul niveau, en fait le minimum pour essayer de créer un personnage au mouvement "réalistes". Ce qui me gène dans ma méthode, c´est que je me demande s´il elle fonctionne pas "trop" bien : par exemple, dans mario, tu peux, pendant un saut, appliquer une légère force afin de maitriser un peu ton déplacement. Je sais pas trop comment faire ça. Enfin, je vais essayer, je verrai bien ce que ça donne...
Comme promis, voici le début de mes tests. Ce premier programme gère seulement les déplacements gauche/droite grâce aux forces. La prochaine étape est les déplacements sur l´axe des Y.
J´ai essayé de commenter un minimum le code, mais si vous voulez plus d´explication, n´hésitez pas à me demander. D´ailleur, si vous pensez pouvoir faire plus simple, n´hésitez pas à faire part de vos méthode. C´est comme ça qu´on apprend
remstart
Super Box Land
Un petit programme pour tester les déplacements de personnages.
Ce programme ne nécessite aucun média, car le tout est créé à partit d´instructions DBPro.
remend
set window off
`variables de couleurs
bleu = rgb(0,0,255)
vert = rgb(0,255,0)
rouge = rgb(255,0,0)
brun = rgb(210,190,160)
`variables générales
`permet de gérer le sable
boxx = 0
boxy = 400
boxw = 640
boxh = 80
`permet de gérer le personnage
`général
mariox = 100 `coordonée x d´origine du personnage (là où il commence au début)
marioy = 384 `coordonée y d´origine du personnage (là où il commence au début)
mariow = 16 `largeur
marioh = 16 `hauteur
`cette partie gère la physique de l´axe des X
marioforcex = 1 `en augmentant cette valeur, mario accélère plus rapidement.
mariovitessex = 0 `ne pas toucher cette valeur, car mario commence immobile au début du jeu.
mariovitessemaxpositiv = 2 `en augmentant cette valeur, mario aura une vitesse de pointe plus élevée
mariovitessemaxnegativ = -2
repeat
`affichage des éléments fixes :
box 0,0,640,400,bleu,bleu,bleu,bleu `ciel
box boxx,boxy,boxx+boxw,boxy+boxh,brun,brun,brun,brun `sable
`PHYSIQUE SUR L´AXE DES X
`fonctionnement : si on appuie sur droite, on accélère la vitesse par la force, à condition que la vitesse maximum
`mariovitessemaxpositiv ne soit pas atteinte.
if ((rightkey()=1) AND (mariovitessex < mariovitessemaxpositiv))
mariovitessex = mariovitessex + marioforcex
endif
`même principe pour la touche gauche
if ((leftkey()=1) AND (mariovitessex > mariovitessemaxnegativ))
mariovitessex = mariovitessex - marioforcex
endif
`ceci ramène les forces à 0 si on ne donne aucune direction à mario
if ((leftkey()=0) AND (rightkey() = 0) AND (mariovitessex <> 0))
if mariovitessex < 0 then mariovitessex = mariovitessex +1
if mariovitessex > 0 then mariovitessex = mariovitessex -1
endif
`la nouvelle position vaut : ancienne position (sur les X) + vitesse (sur les X)
mariox = mariox + mariovitessex
`PHYSIQUE SUR L´AXE DES Y
`en cours de rédaction !! !
if mariox > 640 then mariox = 1 `mario ne sort pas de l´écran
if mariox < -16 then mariox = 640 `idem
box
mariox,marioy,mariox+mariow,marioy+marioh,rouge,ro
uge,rouge,rouge `mario
`INSTRUCTION POUR LE DEBUGGAGE
xstring$ = "Vitesse X = " + str$(mariovitessex)
ystring$ = "Vitesse Y = " + str$(mariovitessey#) `inutile pour le moment
text 100,100,xstring$
text 100,120,ystring$
text 300,100,str$(mariox) `simplement les coordonnées
text 300,120,str$(marioy)
until returnkey()=1
J´ai pas encore testé le code mais à vue de nez y´a rien à redire. C´est un bon début.
Ouai, pour l´instant ça a l´air de fonctionner. Bon, pour l´instant, le seul problème est que l´effet d´accélération n´est pas visible, ce qui est d´ailleurs normal vu que la vitesse passe de 1 à 2 frames par seconde en seulement 1 frame ! Je me demande si je vais essayer de faire une accélération plus lente, ce qui donnerait une maniabilité genre sonic, ou si je fais une maniabilité genre mario, avec une seul vitesse, plus un bouton de course. Je vais y réfléchir.
Actuellement, je suis un peu aux prises de la gravité (sans faire de jeux de mots). J´hésite entre deux méthodes :
-la gravité agit en permanence, et quand mon perso touche un sol, c´est à dire quand il y a collision, le déplacement est annulé.
-le deuxième, la gravité agit seulement quand il n´y a pas de contact avec le sol.
Je crois que la première est meilleur, je vais plutôt dans cette direction.
Voilà, à plus
Merci pour vos réponses
Eh beh voilà ca fait 2ans que j´étais sur ton topic et ca continue, c´est bien de voir qu´il n´a pas coulé :D
Un petit up ne ferait de mal à personne
J´aurais une question à propos de la création d´un fondu de transition ^^
Quelle genre de question ? Quelques détails ?
Dsl du retard ^^
En fait la transition en fondu d´une image vers une autre...
Salut, j´ai un petit problème. J´arrive pas à comprendre comment on utilise la commande set current bitmap. Merci de m´aider.
salut,
sous DB, si on veux utiliser comme map un fichier 3ds, on est donc obligé de gerer les collisions soit même ?
Parceke g modeliser mon labo de chimie et jvoudrais me balader dedant après, ya les moteur de rendu temps réel mais sont pas gratuits.
Sinon i vous aez une astuce pour convertir du 3ds en bsp ?. ..
j´me demandait si on pouvais pas convertir du 3dsmax sortie en .map puis sur radian en bsp ?
a tt
avant de penser a acheter ce truc je voudrais savoir:
1. on peux faire quoi comme jeux?
2. c´est facile a comprendre ou ta des codes de 5 page pour faire un truc simple comme avancer?
3. Ya des tuto simple pour commencer?^^(francais ou anglais peux importe)
1/ Tout type de jeu "raisonnable" est réalisable. FPS, stratégie en 3D, 2D...
J´ai justement terminé mon jeu en Dark Basic Pro, si tu veux jeter un coup d´oeil :
http://www.pc-infogame.com
2/ Au niveau du code, c´est vraiment simple. Avancer un objet, c´est juste utiliser : move object ID_Objet, Distance... C´est un langage très accessible et bien documenté. Je te conseille de tester la version démo pour t´en rendre compte.
3/ Tutos simples ? Pleins d´exemples sont fournis avec le logiciel. La communauté est aussi très active sur le forum officiel.
^^ merci :D
j´avait essayer le flash mais c´est imcompréensible
ca doit ressembler a ame maker donc ca doit être relativement facile
Ouais ça reste assez simple mais pas autant que Game Maker ou FPS Creator. Ca reste de la programmation classique (boucles, structures, tableaux...) mais sans éditeur de niveaux, graphiques...
quand je l´ouvre ya que un gross collone ou faut écrire les codes :O
ya pas un truc ou tu entre tes modele 2D/3D?
Ah non y a pas d´éditeur graphique, d´interface... enfin seulement un éditeur de code ^^
Pour utiliser tes modèles, il faut simplement utiliser la commande load object "chemin", ID dans une boucle :
load object "modeles.X", 1
Do
sync
Loop