2013-02-13 2 views
0

나는 Love2d에서 내 플레이어를 점프하려고합니다. 그는 그래,하지만 아래쪽으로 점프. 그래, 아래쪽으로. 땅속처럼. 이 문제를 해결하는 데 도움이 필요합니다. 최대한 많은 데이터를 가지고 놀았으며, 지금까지 모든 논리적 솔루션 (점프 높이를 음수로 설정하는 등)이 작동하지 않습니다.아래로 점프하는 love2d 플레이어

여기 코드가 있습니다. 사람들이 도울 수 있기를 바랍니다.

----------------- 
--- 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 main.love 파일.

답변

4

나는 귀하의 문제는 당신이 좋은 방법으로 좌표계를 보지 못한다는 것입니다.

는 Y 값이 증가하고 아래로 이동하는 동안 enter image description here! 당신의 게임 행운 (내가 좋아하는

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 

을 나는이 당신을 위해 분명하다 희망 : 대부분의 수학 수업에서 보는 것처럼

당신은 단지 사람들을 교체해야합니다 귀하의 main.lua를 해결하려면 ... 감소하지 않음 그래픽).

더 빨리 도움을 받으려면 Love2d Forums에 직접 게시해야합니다.

+0

그래, 나는 love2d 포럼에 게시하려했지만 그게 내게 활성화 이메일을 보내지 않을거야 ... 권자. 도와 줘서 고마워, 지금 당장 시험해 봐. – hexagonest

+0

그냥 "player.y_velocity = player.y_velocity - gravity * dt"로는 잘 작동하지 않았지만 "player.y_velocity = player.y_velocity + gravity * dt"로 변경하고 완벽하게 작동합니다! 감사합니다 :) – hexagonest

+0

죄송합니다 - 어쨌든, 덕분에 + – jDourlens

관련 문제