2013-02-13 5 views
0

Я пытаюсь заставить своего игрока в Love2d прыгать. Он прыгает, да, но вниз. Да, вниз. Как в землю. Мне нужна помощь в этом, я играл с данными так сильно, насколько могу, и до сих пор каждое логическое решение (установка высоты перехода на отрицательное число и т. Д.) Не работает.love2d player прыгает вниз

Вот код, надеюсь, вы, ребята, можете помочь.

----------------- 
--- LOVE.LOAD --- 
----------------- 
function love.load() 
    love.graphics.setBackgroundColor(92,217,255) 
    playerIdle=love.graphics.newImage('/sprites/spriteTestIdle.png') 
    playerLeft=love.graphics.newImage('/sprites/spriteTestFlip.png') 
    playerRight=love.graphics.newImage('/sprites/spriteTest.png') 
    player={} 
    player.image=playerIdle 
    player.x=400 
    player.y=303 
    player.speed=200 
    player.y_velocity=303 
    gravity=600 
    jumpHeight=200 
    hills=love.graphics.newImage('/sprites/spriteHills.png') 
end 
------------------- 
--- LOVE.UPDATE --- 
------------------- 
function love.update(dt) 

    if (player.x>735) then 

     if (love.keyboard.isDown('left') or love.keyboard.isDown('a') or love.keyboard.isDown('right') or love.keyboard.isDown('d')) then 
      player.x=player.x-(player.speed*dt) 
     end 

    elseif (player.x<-10) then 

     if (love.keyboard.isDown('left') or love.keyboard.isDown('a') or love.keyboard.isDown('right') or love.keyboard.isDown('d')) then 
      player.x=player.x+(player.speed*dt) 
     end 

    else 

     if (love.keyboard.isDown('right') or love.keyboard.isDown('d')) then 
      player.image=playerRight 
      player.x=player.x+(player.speed*dt) 
     elseif (love.keyboard.isDown('left') or love.keyboard.isDown('a')) then 
      player.image=playerLeft 
      player.x=player.x-(player.speed*dt) 
     else 
      player.image=playerIdle 
      player.x=player.x 
     end 

    end 

    if (player.y_velocity ~= 303) then 
     player.y = player.y + player.y_velocity * dt 
     player.y_velocity = player.y_velocity - gravity * dt 

     if (player.y < 303) then 
      player.y_velocity = 303 
      player.y = 303 
     end 

    end 


end 
----------------------- 
--- LOVE.KEYPRESSED --- 
----------------------- 
function love.keypressed(key) 

    if (key == " ") then 

     if (player.y_velocity == 303) then 
      player.y_velocity = jumpHeight 
     end 

    end 

end 
----------------- 
--- LOVE.DRAW --- 
----------------- 
function love.draw() 
    love.graphics.draw(hills, 0, 0) 
    love.graphics.draw(player.image, player.x, player.y) 
end 

Here is основной.love файл.

ответ

4

Я думаю, ваша проблема в том, что вы не видите систему координат в хорошем смысле.

enter image description here

В то время как вы идете вниз значение Y увеличивается! Не уменьшается, как вы видите в большинстве математических классов ..

Чтобы исправить main.lua вы должны просто заменить те:

jumpHeight= -200 --in love.load 

player.y_velocity = player.y_velocity - gravity * dt --in the love.update 

if (player.y > 303) then --in love.update 

Я надеюсь, что это ясно для вас, удачи для вашей игры (мне нравится графика).

Кроме того, если вы хотите быстрее справиться, вы должны прямо отправить сообщение Love2d Forums.

+0

Да, я пытался публиковать сообщения на форумах love2d, но он не отправил мне электронное письмо активации ... lol. Спасибо за вашу помощь, попробовав это прямо сейчас. – hexagonest

+0

Просто попробовал, не очень хорошо работал с «player.y_velocity = player.y_velocity - gravity * dt», но я изменил его на «player.y_velocity = player.y_velocity + gravity * dt», и он отлично работает! Спасибо :) – hexagonest

+0

Извините, что я испортил - и + = D – jDourlens

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