2010-07-23 4 views
-2

http://davzy.com/gameA/Почему моя сила тяжести в этом?

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

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

+1

Вам лучше вставить код, чем дать хакерам возможность загрузить свой фид les и поиск там вы не знаете где. –

+1

@OP О чем ты говоришь? –

+0

Мне нужен способ добавить гравитацию в мою игру, я не знаю, как это сделать! – Macmee

ответ

0

В основном тяжесть в платформер выглядит следующим образом:

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

2

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

S (T) = щ + 1/2at

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

Смежные вопросы