2010-07-23 4 views
-2

http://davzy.com/gameA/Pourquoi ma gravité fonctionne-t-elle dans ce domaine?

Je n'arrive pas à trouver une méthode intelligente pour obtenir la gravité. Maintenant, avec cela, il détecte quel bloc le personnage est fini mais il ne tombe pas dans ce bloc!

Existe-t-il une meilleure façon de faire de la gravité? Je voudrais le faire sans une bibliothèque de jeux.

+1

Vous feriez mieux de coller du code que de donner l'occasion aux pirates de télécharger votre fi les et recherchez là vous ne savez pas où. –

+1

@OP De quoi parlez-vous? –

+0

J'ai besoin d'un moyen d'ajouter de la gravité à mon jeu, je ne sais pas comment! – Macmee

Répondre

0

Fondamentalement gravité dans un jeu de plateforme va comme ceci:

var currentGrav = 0.0; 
var gravAdd = 0.5; // add this every iteration of the game loop to currentGrav 
var maxGrav = 4.0; // this caps currentGrav 

var charPosY = getCharPosY(); // vertical position of the character, in this case the lower end 
var colPosY = getColDow(); // some way to get the vertical position of the next "collision" 

for(var i = 0; i < Math.abs(Math.ceil(currentGrav)); i++) { // make sure we have "full pixel" values 
    if (charPosY == colPosY) { 
     onGround = true; 
     break; // we hit the ground 
    } 
    onGround = false; 
    charPosY++; 
} 

Maintenant pour sauter on pourrait simplement faire ceci:

if (jumpKeyPressed && onGround) { 
    currentGrav = -5.0; // 
} 

Vous pouvez, si vous voulez (et comprendre C), consultez mon jeu pour un jeu de plate-forme de base (avec des plates-formes mobiles) ici:
http://github.com/BonsaiDen/Norum/blob/master/sources/character.c

2

Je ne sais pas ce que vous entendez par "obtenir la gravité"; votre question n'est pas claire. Je suppose que si on peut détecter lorsque le bloc est terminé, on peut utiliser la formule suivante:

s (t) = ut + 1/2AT

s est la distance à l'instant t, u est la vitesse initiale (qui dans votre cas serait nul), et a est l'accélération (sur Terre c'est 9.8m/s). Essentiellement, vous ajusteriez la position supérieure de votre objet en fonction de la valeur obtenue à l'instant t (donc original top position of object + s(t)). J'imagine que vous utiliseriez une sorte de boucle d'animation. Peut-être un setInterval. Peut-être que d'autres personnes ayant plus d'expérience dans l'animation Javascript peuvent s'interroger sur la meilleure façon de l'implémenter. Cependant, ce serait la formule que vous utiliseriez pour déterminer où se trouve l'objet à l'instant t, s'il tombe.

Questions connexes