1

私はゲームを作るためにLove2dとLuaを使用しています。現在、私には左から右へと「滑る」男がいます。彼が画面から落ちないように、彼の動きを制限できるようにしたいと思います。彼のXが800より大きいかどうかを検出するためにifステートメントを作成しようとしましたが(私のウィンドウサイズは800x600であるため)、グリッチが発生しました。コードは次のとおりです。助けてください?

function love.load()
love.graphics.setBackgroundColor(92,217,255)
person={}
person.image=love.graphics.newImage('/sprites/spriteTest.png')
person.x=400
person.y=303
person.speed=200
hills=love.graphics.newImage('/sprites/spriteHills.png')
end
function love.update(dt)

if (person.x>735) then

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

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

    end

elseif (person.x<0) then

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

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

    end

else

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

end

end
function love.draw()
love.graphics.draw(hills, 0, 0)
love.graphics.draw(person.image, person.x, person.y)
end
4

2 に答える 2

0

この方法はどうですかupdate

function love.update(dt)
  if ((love.keyboard.isDown('right') or love.keyboard.isDown('d')) and person.x < 735) then
    person.x = person.x + person.speed * dt
  end
  if ((love.keyboard.isDown('left') or love.keyboard.isDown('a')) and person.x > 0) then
    person.x = person.x - person.speed * dt
  end
end

基本的にあなたは言いたいと思ってからif a movement key is down 移動 the object can moveします。

また、スプライトの下端の中心をピボットポイントとして使用します。次に、64 x 64のスプライトがあると仮定して、ox = 32and (原点オフセット)を使用する必要があります。ox = 64

于 2013-02-09T07:05:31.803 に答える
0

私は答えを見つけました。これがコードです

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
        person.x=person.x+(person.speed*dt)
    elseif (love.keyboard.isDown('left') or love.keyboard.isDown('a')) then
        person.x=person.x-(person.speed*dt)
    end

end

end

修正されないように見えるかもしれませんが、私にとっては修正されました。私は、彼が端にいる場合、それ以上彼を行かせないように設定しました。

于 2013-02-09T21:14:29.260 に答える