Love2Dλ‘ κ²μ λ§λ€κΈ° μ리μ¦
μ΄μ κΈ : https://gall.dcinside.com/game_dev/156920
μ΄λ² κ°μμμλ μ λ² κ°μμμ λΆμ‘±νλ€κ³ μκ°νλ μ , νΌλλ°±μ λ°μ μ λ€μ κ°μ νμ¬ λ
μμ μμ€μ΄ Lua νλ‘κ·Έλλ°μ λν μΌλ°μ μΈ μ§μμ΄ λΆμ‘±νλ€κ³ κ°μ νκ³ λͺ¨λ°μΌ κ°λ
μ±μ λμ΄λλ° μ£Όλ ₯ν¨. λ¬Όλ‘ κ°μμ λͺ©μ μ μ΄λκΉμ§λ Love2Dλ‘ κ°λ¨ν κ²μ λ§λλ λ²μ λν λ΄μ©μ΄λ Luaμ λν μμ£Ό κΈ°λ³Έμ μΈ λ΄μ©μ λ€λ£¨μ§ μμ κ²μ. νμνλ€λ©΄ λ°λ‘ λ°°μ°κ±°λ μΆνμ Lua νλ‘κ·Έλλ° κ°μλ₯Ό μΈ μλ μμΌλ κΈ°λ€λ¦¬κΈ°λ₯Ό...
11. μμ€μ½λκ° λ무 볡μ‘ν΄! λͺ¨λνλ₯Ό ν΄λ³΄μ.
μ°λ¦¬λ main.lua νμΌμ λͺ¨λ μ μλ₯Ό λ€ λ°μ΄λ£μλ€. ν νμΌμ λ² μ΄μ€ κ°μ²΄ μ μ, νμ κ°μ²΄ μ μ, μ½λ°± ν¨μ μ μκ° λͺ¨λ λ€ λ€μ΄κ°κ² λμκ³ κ·Έ κ²°κ³Ό μμ€μ½λλ₯Ό μ½κΈ°κ° λ§€μ° νλ€μ΄μ‘λ€. μΌλ°μ μΌλ‘ ν νμΌμ μ½λλ₯Ό λͺ°μμ°κ²λλ©΄ μ΄λ€ λ¬Έμ κ° λ°μν κΉ?
(1). μ΄λ¦ 곡κ°μ΄ μΆ©λν μ μλ€.
μλ₯Ό λ€μ΄, DataλΌλ μ΄λ¦μΌλ‘ κ°μ²΄λ₯Ό λλ² μ μν μ μλ€. λ¬Έμ λ Dataλ νν μ΄λ¦μ΄λΌμ μμ£Ό μ°μΈλ€λ μ μ΄λ€.
(2). μμ€μ½λ μ½κΈ°κ° λ무 νλ€μ΄μ§λ€.
νμ¬ μμ€μ½λμ λ¬Έλ§₯μ΄ μ½λμ νμν κ°μ²΄λ₯Ό μ μνλ λ¨κ³λΌλ©΄ κ·Έ κ³³μλ κ·Έμ κ°μ²΄μ μ΄λ¦λ§ μ¨λκ³ μ€μ μ μλ κ°λ³ νμΌλ‘ λΆλ¦¬ν μλ μλ€.
νμ§λ§ λͺ¨λνκ° μλλ€λ©΄ μ€μ μ μκ° νλμ νμΌμ μ λΆ μμΌνλ―λ‘ λ§€μ° κΈ΄ νμΌμ μ½μ΄μΌ λ€μ λ¬Έλ§₯μ μ½μ μ μμ κ±°λ€.
(3). μλͺ»λ λ°©λ²μΌλ‘ νλ‘κ·Έλλ°μ ν κ°λ₯μ±μ λνλ€.
1λ²μ λ¬Έμ μ μ ν΄κ²°νκΈ° μν΄ μ λμ΄λ₯Ό λΆνλ€! μ΄κ±΄ Luaμμ μ ν μ’μ μκ°μ΄ μλλ€. Luaλ ν
μ΄λΈλ‘ μ΄λ¦ 곡κ°μ λ§λ€ μ μλ€! κ·Έ μΈμλ λ§μ λ¬Έμ μ μ λ§λ λ€.
κ·Έλμ 11μ₯μμλ main.luaλ₯Ό κ°μ²΄ λ¨μλ‘ λλμ΄ μ¬λ¬ νμΌμ λΆμ°νλ λ²μ μ€λͺ
νλ€.
μΌλ°μ μΌλ‘ Luaμμ λͺ¨λμ λ€μκ³Ό κ°μ΄ ꡬμ±λλ€.
λͺ¨λμ μ¬μ©νκΈ° μν΄μλ require ν¨μλ₯Ό μ¬μ©νλ€. (μ£Όμν μ μ, λͺ¨λμ κ²½λ‘λ₯Ό μ§μ ν λλ νμ₯μλ₯Ό μ¬μ©νμ§ μλλ€. '.'μ λλ ν°λ¦¬ ꡬλΆμλ‘ μ¬μ©λκΈ° λλ¬Έμ΄λ€.)
local M = require "M"
local N = M:new()
μ°λ¦¬λ main.lua νμΌ νλλ₯Ό μͺΌκ°μ΄μ GameObject.lua, Bomb.lua νμΌλ‘ λΆλ¦¬ν μλ μλ€. μλλ λͺ¨λ λ°©μμΌλ‘ μμ±λ GameObject.luaμ μμλ₯Ό 보μΈλ€.
12. κ²μμ μ μ κ·μΉκ³Ό ν¨λ°° 쑰건μ ꡬννμ.
"μ€λ μ΄μλ¨μμλ‘ μ μκ° λκ³ , ννκ³Ό λΆλͺνκ±°λ κ²μ νλ©΄ λ°μΌλ‘ λκ°λ©΄ ν¨λ°°νλ©° μ μλ₯Ό νμνλ€."
μ΄μ 5κ°μ κ²μ κ·μΉμ μ€λͺ
ν λ° μλ€. μ΄λ² κ°μμμλ 3λ²μ§Έ κ·μΉμ ꡬνν κ±°λ€.
1λ¨κ³: λ§μ°μ€μ μμ§μμ κ°μ§νμ.
Love2Dλ love.mousemovedλΌλ μ½λ°±μ μ§μνλ€. μ΄ ν¨μλ₯Ό λ€μκ³Ό κ°μ΄ μμ±νμ.
μ΄λ λ§μ°μ€κ° λ§€λ² μμ§μΌλλ§λ€ cursor κ°μ²΄μ x λ° yκ°μ κ°±μ ν΄μ£Όλ μν μ νλ€. μ΄ κ°μ 0λΆν° μ΅λ νλ©΄ ν¬κΈ°μ 1μ λΊ κ° μ¬μ΄λ‘ μ ν΄μ§λ€.
κ·Έλ¦¬κ³ cursor κ°μ²΄μ μ μκ° μλμμΌλ main.lua μλ¨μ λ€μ μ½λλ₯Ό μΆκ°νλ€.
radiusλ λμ€μ μΆ©λ κ°μ§μμ μ¬μ©λ κ²μ΄λ€. isCollideλ GameObjectλ₯Ό λΉκ΅ λμμΌλ‘ κ°λλ° μ΄λ λ§μ°μ€λ GameObjectκ° μλμ§ μλκ³ λ¬Όμ μλ μλ€.
νμ§λ§ λ§μ°μ€κ° μμΉν μ μ μ¬μ€ λ°μ§λ¦μ΄ 0μΈ μμΌλ‘ μκ°ν μ μκ³ λ§μ°μ€κ° μμ§μΌ λλ§λ€ μ΄ μμ΄ λ°λΌμ μμ§μΈλ€κ³ μκ°νλ©΄ λλ€. λ§μ°μ€μ μμ μΆ©λμ κ°μ§νλ ν¨μλ₯Ό μλ‘ λ§λλ κ²λ³΄λ€λ μ¬νμ©μ΄ λ«λ€.
2λ¨κ³: ννμ΄ λ§μ°μ€μ μΆ©λνλμ§ κ²μ¬νλ€.
μ΄κ±΄ μ λ§ μ½λ€. κ·Έμ main.lua νμΌμ μλ update μ½λ°±μ λ€μκ³Ό κ°μ΄ λ³κ²½ν΄μ£Όμ.
ννκ³Ό μ μ΄μ κ°μ§νλ λΆλΆμ isCollide ν¨μλ‘ μΆ©λμ κ²μ¬νκ³ μΆ©λμ΄ νμΈλλ©΄ isGameoveredλ₯Ό trueλ‘ μ€μ ν΄μ κ²μ ν¨λ°°λ‘ λ§λλ κ°λ¨ν ꡬ쑰μ΄λ€.
λ§μ°μ€κ° νλ©΄μ λ²μ΄λλ κ²μ κ°μ§νλ λΆλΆμ λ§μ°μ€ μμΉκ° 0 λλ νλ©΄ κ²½κ³μ μΌμΉνλμ§λ₯Ό κ²μ¬νλ€. μκΉ λ§μ°μ€ 컀μ μμΉμ λ²μκ° 0λΆν° μμνλ€κ³ νκΈ° λλ¬Έμ getWidthμ getHeightλ‘ μ»μ΄λΈ νλ©΄ ν¬κΈ°μμ 1μ λΉΌμ€λ€.
3λ¨κ³: κ²μ ν¨λ°° νλ©΄μ μ€μ νμ.
draw μ½λ°±μ λ€μκ³Ό κ°μ΄ λ°κΎΈμ.
κ²μ μ€λ²κ° μλλΌλ©΄ ννμ νμνκ³ , κ²μ μ€λ² μνλ©΄ κ²μ μ€λ² λ©μμ§λ₯Ό νλ©΄ μ€μμ νμνλ€.
13. μ μ μμ€ν μ ꡬννμ.
μ΄μ ν면보νΈκΈ° μμ€μ λ²μ΄λ κ² κ°λ€. νμ§λ§ ν΄κ²°ν΄μΌν λ¬Έμ κ° νλ λ λ¨μλ€. μ무리 μ€λ«λμ ννμ νΌν΄ μ΄μλ¨μλ μ μκ° μμΌλ κ²μμ νλ μλ―Έκ° μλ€.
κ·Έλμ μ΄λ²μλ μ μ μμ€ν μ ꡬννκ³ μμ‘΄ μκ°μ λ°λΌ μ μλ₯Ό λΆμ¬νμ.
λ¨Όμ , gameScore λ³μλ₯Ό μ μν΄μ€λ€.
μ°λ¦¬ κ²μμ μ΄μλ¨μ μκ°μ λΉλ‘νμ¬ μ μκ° κ²°μ λλ μμ€ν
μ μ±ννμλ€. κ°λ¨νκ² 1μ΄μ νμ΄λ¨Έκ° 60λ² μ¦κ°νκ³ 1λ² μ¦κ°ν λλ₯Ό 1μ μΌλ‘ μΌμ. κ²μμ μκ°μ μΈ‘μ νλ λ³μλ₯Ό μ μν΄μ€λ€.
μ΄μ update μ½λ°±μ gameTimerμ κ°μ 1μ© μ¦κ°μν€λ μ½λλ₯Ό μμ±νλ©΄ λλ€.
μ°Έκ³ λ‘ Luaλ λ³΅ν© λμ μ°μ°μλ₯Ό μ§μνμ§ μλλ€. 1μ λνλ €λ©΄ gameTimer += 1κ³Ό κ°μ΄ ν μ μλ€.
λ§μ§λ§μΌλ‘ κ²μ μ€λ²μ μ μλ₯Ό νμν μ μλλ‘ draw μ½λ°±μ μμ νμ.
14. λ²κ·Έλ₯Ό μμ νμ.
μ°λ¦¬ κ²μμ λ³ μ΄μμ΄ μλ κ²μ²λΌ 보μΈλ€. κ·Έλ¬λ κ²μμ μμνκ³ λμ μ€λΉν μκ°μ μ£Όμ§ μλλ€λ κ²μ΄ λ¬Έμ λ€. λ²κ·Έλ κ²μμ λ‘μ§μ΄ μ€μλν΄μλ μΌμ΄λμ§λ§ κ°λμ λμ μ¬μ©μ κ²½νμ΄ λ²κ·Έμ²λΌ 보μ΄λ κ²½μ°κ° μλ€. νμ§λ§ 그건 λ²κ·Έκ° λ§λ€. μλνλ©΄ μ λ² νΈμμ μ΄λ―Έ μ€λΉ μκ°μ 5μ΄ μ€λ€κ³ μ€λͺ
νκΈ° λλ¬Έμ΄λ€.
μ€λΉ μκ°λμμλ ννμ λΏκ±°λ νλ©΄ λ°μ λ²μ΄λλ κ²μ μ€λ²κ° λλ©΄ μλλ€. λ¨, μ€λΉ μκ°μ κ²μ μ μλ‘ μΈμ νμ§ μκ±°λ 무μλ―Έν΄μΌ νλ€. μ΄λ λͺ¨λ κ²μ μ€λ²μ κ΄λ ¨λ λ‘μ§μ λ€μ 쑰건문μ λ£λ κ²μΌλ‘ ν΄κ²° κ°λ₯νλ€.
μ΄ μ‘°κ±΄λ¬Έμ κ²μ νμ΄λ¨Έκ° 0μμ 300μΈ κ΅¬κ°κΉμ§λ μ λλ‘ μ±λ¦½νμ§ μλλ€. 300νλ μμ΄λ©΄ 5μ΄μ΄λ€. κ·ΈλΌ μ΄μ 5μ΄μ μ€λΉ μκ°μ΄ μ£Όμ΄μ§ κ±°λ€.
λ²κ·Έλ μκ³ λ³΄λ©΄ μμ£Ό μμ μμΈμΌλ‘ μΌμ΄λλ κ²½μ°κ° μλ€. μ€μ λ‘ Luaλ λΉ λ₯Έ κ°λ° μλκ° μ₯μ μΈ μΈμ΄μ΄μ§λ§ κ·Έ λ§νΌ λ-νμ΄νμΌλ‘ μΈν΄ λ§μ λ²κ·Έλ₯Ό λ°μμν¬ μ μλ€. λ¬Όλ‘ μ΄λ² κ²½μ°λ λ-νμ΄νμ΄ μλκ³ μ½λλ₯Ό μ§ λμ λ¨Έλ¦¬κ° λ-μμ€μ΄λΌ κ·Έλ°κ±°λ Luaλ₯Ό ννμ§ λ§μ.
κ°μλ₯Ό λλ²μ§Έλ‘ μ¨λ³΄λλ° λμ μλν°κ° μλ κ΅¬λ €μ νΈμ§νκΈ° νλ¬. νλ ₯λ μ’μ νΈμ΄ μλλΌμ μ΄λ €μ. ν κΈμ λͺ°μμ°λ μ΄μ κ° μ΄κ±° 빨리 λλ΄κ³ μΆμ΄μ κ·Έλ°λ° κ·Έλ₯ μ’ κΈΈκ² μ¨λ λλκΉ μμΈνκ² μΈκΉ μκ° μ€μ κ·Όλ° λλ³΄λ€ Luaλ Love2Dλ₯Ό μ κ°λ₯΄μΉλ μλ°λ€μ΄ μ°¨κ³ λμ³μ μ΄λ €μΈμλ (λ¬Όλ‘ μ£λ€ μμ΄μ)
https://drive.google.com/drive/folders/1jJYUduwm6jUcpqsjRKhm1Xmuf4nywrRz?usp=sharing
μμ€μ½λλ λλΌμ΄λΈμ μ¬λ¦Ό.
μ λ€ μ°κ³ λλκΉ κΈμ μ μ ν κ±Έλ Έλ€ κ·Έλμ μΌλΆ λ΄μ© νλ
Έμ€λ¨ μ£Όμ
μ΄λΆ love2d μ λμ¬λ€ κ³ λ μ λμ¬ κΉλ©κ° 보λ λλ νμ΄ν
μ½λ λ¬Έλ²μ΄ js λ python μμκ±° κ°λ Έ
GameObjectμ colorλ μμ±ν λ λ°λ‘ μ μΈ μ ν΄μ£Όκ³ λμ€μ μ κ°μ μμ νλ©΄ λ©νν μ΄λΈ κ±°μ³μ κΈ°λ³Έκ°μ λ°κΏλ²λ¦΄ μλ μκ² λ€ μμ μ ν λ² λΉν μ μμγ γ γ γ
κ·Έλ΄λλ o = o or {} ν μ΄λΈ μμ±μ λΆλΆμ μ΅μν νμλ‘ μμ΄μΌ νλ λ©€λ²λ€μ 미리 μ μν΄λλ κ²λ νλμ λ°©λ².
love2dλ νμ€ν μμμΈ΅μ΄ μμ λ― λ μ΄κ±° λ ΈνΈλΆμμλ κ°λ³κ² λμκ°μ μ’λλΌ
μμ¦ μ μΌ κ΄μ¬κ°λ κ±°μλλ° μ°μ¬μΆ - dc App