Почему моя гравитация работает в этом? - PullRequest
0 голосов
/ 23 июля 2010

http://davzy.com/gameA/

Я не могу придумать разумный способ получить гравитацию. Теперь он определяет, какой блок у персонажа закончен, но не попадает в этот блок!

Есть ли лучший способ сделать гравитацию? Я бы хотел сделать это без библиотеки игр.

Ответы [ 2 ]

2 голосов
/ 23 июля 2010

Я не знаю, что вы подразумеваете под «получить гравитацию»;ваш вопрос неясен.Я предполагаю, что если вы можете определить, когда блок закончился, вы можете использовать следующую формулу:

s (t) = ut + 1 / 2at 2

Где s - это расстояние в момент времени t, u - начальная скорость (которая в вашем случае будет равна нулю), а a - ускорение (на Земле это 9,8 м /s 2 ).По сути, вы будете корректировать верхнюю позицию вашего объекта в зависимости от значения, которое вы получите в момент времени t (то есть original top position of object + s(t)).Я полагаю, вы бы использовали какой-то цикл анимации.Возможно setInterval.Может быть, другие с большим опытом в анимации Javascript могут рассказать о лучшем способе реализовать это.Однако это будет формула, которую вы будете использовать, чтобы выяснить, где находится объект во время t, если он упадет.

0 голосов
/ 24 июля 2010

В основном, гравитация в платформере выглядит так:

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++;
}

Теперь, чтобы прыгнуть, можно просто сделать это:

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

Вы можете, если хотите (и понимать C), проверить мою игру на предмет базового платформера (с движущимися платформами) здесь:
http://github.com/BonsaiDen/Norum/blob/master/sources/character.c

...