Pixel LoveまたはLove2dとは

Love2dとは何ですか? これは、2Dゲームを開発するためのクロスプラットフォームフレームワークです。 なぜまさにlove2dなのか? それは無料、軽量、クロスプラットフォーム、オープンソースであり、最も重要なのは、愛を込めて作られたエンジンだからです。





準備する


ノートブックでもゲームを書くことができますが、シンプルで柔軟なのでSublime Text 2を使用します。 人気のあるすべてのデスクトッププラットフォームの愛をここからダウンロードできます。 Sublimeテキストを起動し、すぐに[ツール]-> [ビルドシステム]-> [新しいビルドシステム]に移動します。



{ "selector": "source.lua", "cmd": ["c:\\Program Files\\LOVE\\love", "${project_path:${folder}}"] }
      
      





(x64をお持ちの場合、愛へのパスを変更します)



これは簡単に開始するためのもので、Ctrl + Bを押すだけで十分です。 ゲームを保存するフォルダーを作成します。 その中でmain.luaを作成します。 ゲームのベースはこのファイルに保存されます。 Sublimeテキストでは、プロジェクトにフォルダーを追加します。 すべて準備完了です。 次のようなものが得られるはずです。







コードが欲しい!


すべてのロジックはlove.update(dt)関数で更新され、love.draw()で描画します。初期化はlove.load()です。 すぐにそれらを書きましょう:



 function love.load() end function love.update(dt) end function love.draw() end
      
      







次に、画像を追加して、すぐに描画します。 画像はlove.graphics.newImage(ファイル名)関数を使用してロードされ、love.graphics.draw(image、x、y)に描画されます。 この写真をフォルダーに追加します。 そして、コードを書きます:



 local habrImage, width, height function love.load() habrImage = love.graphics.newImage("habr.png") width = love.graphics.getWidth() height = love.graphics.getHeight() end function love.update(dt) end function love.draw() love.graphics.draw(habrImage, width / 2 - habrImage:getWidth() / 2, height / 2 - habrImage:getHeight() / 2) end
      
      







Ctrl + Bを使用すると、美しくないものがあるので、微調整して背景を白にしましょう。 レンダリングの開始時に次の行を追加します。



 love.graphics.setBackgroundColor(255, 255, 255)
      
      







そして今、素敵な写真。



もちろんこれはすべてクールですが、ゲームに命を吹き込み、絵でアクションを実行しましょう。

-Rキーで、画像が回転します

-Sキーでは、画像が増減します

-Mボタンは画像を移動します。



これを実装するために、変数state(何が起きているかを担当します)、rotation(画像の角度)、scale(そのサイズ)、ox、ox(画像の中心のシフト)、delta(この変数は変数の更新を担当します)を追加します。 入力については、恋に、キーが下げられると、love.keypressed(キー、ユニコード)関数が呼び出され、love.keyreleased(キー)が上げられます。 キーの下降を追跡します。 次に、コード自体:



 local habrImage, width, height, state, rotation, scale, ox, oy, delta --  function love.load() habrImage = love.graphics.newImage("habr.png") width = love.graphics.getWidth() height = love.graphics.getHeight() state = "none" resetVariables() end --         function resetVariables() rotation = 0 scale = 1 ox = 0 oy = 0 delta = 1 end --    function love.keypressed(key, unicode) if key == "r" then state = "rotation" resetVariables() elseif key == "s" then state = "scalling" resetVariables() elseif key == "m" then state = "moving" resetVariables() elseif key == "space" then --    (: state = "none" resetVariables() end end --  function love.update(dt) if state == "rotation" then --  rotation = rotation + delta * dt elseif state == "scalling" then -- scale = scale + delta * dt elseif state == "moving" then --  ,    : --     --          --   delta = delta + delta * dt local radius = 50 ox = radius * math.sin(delta) oy = radius * math.cos(delta) end end -- function love.draw() --  love.graphics.setBackgroundColor(255, 255, 255) --  love.graphics.draw(habrImage, width / 2 - habrImage:getWidth() / 2, height / 2 - habrImage:getHeight() / 2, rotation, scale, scale, ox, oy) end
      
      







紳士です ゲームを作って頑張ってください! ここであなたを助けるためにウィキオフサイトです。



継続する。



Z.Y. これはすべて0.8.0で書かれています。

Z.Z.Y. 実行するビルドシステムを選択することを忘れないでください。



All Articles