Love2d:Tips - hiz1/lua GitHub Wiki
Love2dプロジェクトのexe化
https://love2d.org/wiki/Game_Distribution_(日本語)
- love2dプロジェクトを、フォルダ内のファイルをすべてZipに圧縮(プロジェクトフォルダは含めない)
- Zipファイルの拡張子をloveに変更。
- 以下のコードでexe化。
copy /b "C:\Program Files (x86)\love-0.10.2-win32\love.exe"+[project].love [project].exe
exe化する場合の注意
dofileでLuaファイルを読み込む場合、exeと同じフォルダに読み込むLuaファイルを置く必要がある。
requireでLuaファイルを読み込む場合は不要。
ファイルを読み込む場合、love.filesystem.readを使用すること。
他のメソッドで読み込むとexe実行した際にエラーが発生する。
フルスクリーン対応
以下のコードをlove.loadに追加。
love.window.setFullscreen( true, 'exclusive' )
終了はAlt+F4。ESCキーで終了できるようにするには以下のコードを追加。
function love.keypressed(key, scancode, isrepeat)
if key == 'escape' then
love.event.quit( )
end
end
フルスクリーンをF4キーで切り替えるには以下のコードをlove.keypressedに追加。
※ love.loadで変数fullScreenを初期化すること。
if key == 'f4' then
fullScreen = not fullScreen
love.window.setFullscreen( fullScreen, 'exclusive' )
end
リソース自動読み込み
スプライト
--[[
Sprite管理
※ ファイル名末尾の_YxXから、パターン数を取得する。
]]
Sprite = {
img = nil,
ptn = nil,
quads = nil,
new = function(path)
local obj = {}
setmetatable(obj, {__index = Sprite})
-- 画像読み込み
obj.img = love.graphics.newImage(path)
local matchGrp = {0,0,0}
local i = 1
local yn, xn = string.match(path, "_(%d+)x(%d+)")
local name = matchGrp[1]
-- パターン数取得
obj.ptn = {tonumber(yn), tonumber(xn)}
local w = obj.img:getWidth() / xn
local h = obj.img:getHeight() / yn
-- パターンごとのQuad作成
obj.quads = {}
for y = 1, yn do
table.insert(obj.quads, {})
for x = 1, xn do
table.insert(
obj.quads[y],
love.graphics.newQuad(
(x-1)*w, (y-1)*h,
w, h,
obj.img:getWidth(), obj.img:getHeight())
)
end
end
return obj
end,
draw = function(self, yptn, xptn, x, y, sx, sy, ox, oy, kx, ky)
assert(1 <= xptn and xptn <= self.ptn[2])
assert(1 <= yptn and yptn <= self.ptn[1])
love.graphics.draw(self.img, self.quads[yptn][xptn], x, y, sx, sy, ox, oy, kx, ky)
end
}
Animation管理
デバッグモード
deug.debug()
でデバッグモードに入る。使い方は要調査。