Tutorial:Baseline 2D Platformer (日本語)
第三部: 自機の移動
演壇があり、自機が登場しています! この男性を動かす時です。 2D アクションゲームにおいて、自機は "左右に移動できるようにする必要がある!" ため、自機は絶えず右側へ移動可能にしないことに留意しておいてください。これを行うには、遊戯者がボタンを押したときに自機は自機は左側または右側へ移動させるため、キーボード入力の割り当てだけではなく自機の移動速度をコードで宣言する必要があります。
function love.load()
...
player.speed = 200 -- これは自機の移動速度です。この値は好みに応じて変更できます。
end
function love.update(dt)
-- これはキーボード入力を割り当てる方法です。
if love.keyboard.isDown('d') then -- 遊戯者が "D" ボタンを押し下げて、そのまま押し続る場合:
player.x = player.x + (player.speed * dt) -- 自機は右側へ移動します。
elseif love.keyboard.isDown('a') then -- 遊戯者が "A" ボタンを押し下げて、そのまま押し続る場合:
player.x = player.x - (player.speed * dt) -- 自機は右側へ移動します。
end
end
コードを実行した場合は、これで自機は左右に移動できます! しかし! このコードは問題があります。自機を右側 (または左側) へ移動し続けることに関して気付かなかったら、自機はゲーム・ウィンドウから出て行ってしまい遊戯者の視覚から消えてしまいます。教本の目的として、それは望んでいません! したがって love.update()
関数内で:
function love.update(dt)
if love.keyboard.isDown('d') then
-- これは自機がゲーム・ウィンドウの右端から出て行かないようにします。
if player.x < (love.graphics.getWidth() - player.img:getWidth()) then
player.x = player.x + (player.speed * dt)
end
elseif love.keyboard.isDown('a') then
-- これは自機がゲーム・ウィンドウの左端から出て行かないようにします。
if player.x > 0 then
player.x = player.x - (player.speed * dt)
end
end
end
これで自機は画面から出て行くことができなくなりました。このように自機は常にゲーム・ウィンドウ内に拘束されます。