0

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

これがmain.love ファイルです。

4

1 に答える 1

4

あなたの問題は、座標系がうまく見えないことだと思います。

ここに画像の説明を入力

あなたが下に行く間、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に直接投稿してください。

于 2013-02-13T21:13:41.100 に答える