μ΄λ² μκ°μλ μ£ΌμΈκ³΅, μ μΊλ¦ν°μ 곡격 κΈ°λ₯κ³Ό κ·Έμ λμλλ νΌκ²©μ ꡬνν κ²μ΄λ€.
μ°μ νλ μ΄μ΄μ 곡격 μ λλ©μ΄μ λΆν° λ§λ€μ.
1. playerμ¬μ μ΄κ³ AnimationPlayerλ Έλλ₯Ό μ νν λ€ attackμ΄λΌλ μ΄λ¦μΌλ‘ μ μ λλ©μ΄μ μ λ§λ λ€.
2. Spriteλ Έλμ textureμμ±μ λν νΈλμ μΆκ°νλ€.
3. attackμ λλ©μ΄μ μ μ΄ κΈΈμ΄λ₯Ό 0.4λ‘ μ€μ νλ€. (루νλ νμ±νμν€μ§ μλλ€)
4. ν€νλ μ 4κ°λ₯Ό 0.1μ΄ κ°κ²©μΌλ‘ λ°°μΉνλ€.
5. graphic/character/main_characterν΄λμ attack_000.png ~ attack_003.png μ΄λ―Έμ§λ€μ κ° ν€νλ μμ μ§μ ν΄μ€λ€.
곡격 μ λλ©μ΄μ μ λ§λ€μλ€λ©΄ player.gdμ€ν¬λ¦½νΈλ₯Ό μ΄κ³ _processν¨μμ λ΄μ©μ μ€ν¬λ¦°μ·κ³Ό κ°μ΄ μμ ν΄μ€λ€.
κ²μμ μ€νμν€κ³ Zν€λ₯Ό λλ₯΄λ©΄ 곡격 μ λλ©μ΄μ μ΄ μ€νλλ€.
곡격 μ λλ©μ΄μ μ΄ μ λλ‘ μλν¨μ νμΈνμΌλ©΄ 곡격μ λ§μμ€ μ μΊλ¦ν°μ νΌκ²© μ λλ©μ΄μ μ λ§λ€μ.
1. enemyμ¬μ μ΄κ³ AnimationPlayerλ Έλλ₯Ό μ νν λ€ hitμ΄λΌλ μ΄λ¦μΌλ‘ μ μ λλ©μ΄μ μ λ§λ λ€.
2. Spriteλ Έλμ textureμμ±μ λν νΈλμ μΆκ°νλ€.
3. hitμ λλ©μ΄μ μ μ΄ κΈΈμ΄λ₯Ό 0.6λ‘ μ€μ νλ€. (루νλ νμ±νμν€μ§ μλλ€)
4. ν€νλ μ 3κ°λ₯Ό 0.2μ΄ κ°κ²©μΌλ‘ λ°°μΉνλ€.
5. graphic/character/enemyν΄λμ hit_000.png ~ hit_002.png μ΄λ―Έμ§λ€μ κ° ν€νλ μμ μ§μ ν΄μ€λ€.
μ΄μ enemy.gd μ€ν¬λ¦½νΈλ₯Ό μ° λ€μ μ€ν¬λ¦°μ·κ³Ό κ°μ΄ μλ‘μ΄ hitν¨μλ₯Ό μΆκ°ν΄μ£Όκ³
_processν¨μλ₯Ό μ€ν¬λ¦°μ·κ³Ό κ°μ΄ μμ ν΄μ€λ€.
μ΄μ playerμ¬μΌλ‘ λμκ°μ.
곡격 μ λλ©μ΄μ μ μ΄λ―Έμ§λ‘λΆν° 곡격 νμ μ μμΉλ₯Ό κ°λ νκΈ° μνμ¬ attackμ λλ©μ΄μ μ 2λ²μ§Έ ν€νλ μμ μ¬μ ν€λλ₯Ό λ§μΆ°λμ. κ·Έλ¦¬κ³ Spriteλ Έλμ νμμ Area2Dλ Έλλ₯Ό μμ±νκ³ λ κ·Έ νμμ CollisionShape2Dλ Έλλ₯Ό μΆκ°ν΄μ€λ€.
CollisionShape2Dμ shapeμμ±μ RectangleShape2Dλ₯Ό λ£μ΄μ£Όκ³ 곡격 νμ μ λ²μλ₯Ό μ‘°μ ν΄μ€λ€. κ·Έλ¦¬κ³ λ€λ₯Έ CollisionShape2Dμ ν·κ°λ¦¬μ§ μλλ‘ debug_colorλ₯Ό λΆμ μμΌλ‘ μ€μ νμ.
Area2Dμ μ΄λ¦μ AttackμΌλ‘ μμ νκ³
μΈμ€νν°μμ Layerμμ±κ³Ό Maskμμ±μ μ€ν¬λ¦°μ·κ³Ό κ°μ΄ μ§μ νλ€.
player.gdμ€ν¬λ¦½νΈλ₯Ό μ΄κ³ μ€ν¬λ¦°μ·μ κ°μ‘°λ λΆλΆλ€μ μΆκ°ν΄μ€λ€.
λν μλ‘μ΄ attackν¨μλ₯Ό μΆκ°λ‘ μμ±νλ€.
μ΄μ attackμ λλ©μ΄μ μ νΉμ μ¬μ μμ μμ λ°©κΈ μμ±ν attackν¨μκ° μλνλλ‘ ν΄μΌ νλ€. μ΄λ₯Ό μνμ¬ [Add Track]λ²νΌμ ν΄λ¦νκ³
λ©λ΄ μ€μμ [Call Method Track]μ μ ννλ€.
λ Έλλ₯Ό μ ννλ μ°½μ΄ λ¨λλ°, μ΅μμμ Playerλ Έλλ₯Ό μ ννκ³ OKλ²νΌμ ν΄λ¦νλ©΄ λλ€.
μ΄λ κ² attackμ λλ©μ΄μ μ μλ‘μ΄ νΈλμ΄ μμ±λμλ€. μ΄ νΈλμ μμ±μ μ νν λ Έλμ ν¬ν¨λ ν¨μλ₯Ό μλμν€λ κ²μ΄ κ°λ₯νλ€. νΈλμ μ°ν΄λ¦νλ©΄ λνλλ [Insert Key]λ©λ΄λ₯Ό ν΄λ¦νμ.
κ·Έλ¬λ©΄ Playerμ ν¬ν¨λ ν¨μλ€μ λμ΄ν λͺ©λ‘μ΄ λνλλλ°, μ΄ μ€μμ attackν¨μλ₯Ό μ ννκ³ [Open]λ²νΌμ ν΄λ¦νλ€.
κ·ΈλΌ μ΄λ κ² attackν¨μμ λν ν€νλ μμ΄ μμ±λλ€.
κ²μμ μ€ννκ³ μ μκ² λ€κ°κ° 곡격νλ©΄ μ μΊλ¦ν°μ νΌκ²© λͺ¨μ μ΄ μ¬μλ κ²μ΄λ€.
κ·Έλ°λ° μ£ΌμΈκ³΅ μΊλ¦ν°κ° μ μκ² κ°λ €μ§λ λ³΄κΈ°κ° μ’ λΆνΈνλ€. μ£ΌμΈκ³΅ μΊλ¦ν°κ° μ 보μ΄λλ‘ κ°μ₯ μμ λμ€κ² νκ³ μ’κ² λ λ°, stage_1μ μ¬ λ μμ μ£ΌμΈκ³΅ μΊλ¦ν° μ¬μ μλμΌλ‘ λλκ·Ένμ¬ λ Έλλ€ μ€ κ°μ₯ μλμ μμΉμν€λ©΄ λκ² μΌλ, κ·Έλ¬λ©΄ λ Έλλ₯Ό μΆκ°ν λλ§λ€ μ΄λ₯Ό μ κ²½μ¨μ€μΌνλ€. κ·Έλ¬λ μ€ν¬λ¦½νΈλ₯Ό μ΄μ©ν΄μ μ£ΌμΈκ³΅μ΄ νμ κ°μ₯ μμ λμ€λλ‘ λ§λ€μ΄λ³΄μ.
ν΄μΌν μΌμ κ°λ¨νλ€. μ€ν¬λ¦°μ·κ³Ό κ°μ΄ player.gdμ€ν¬λ¦½νΈμ _processν¨μμ move_to_frontν¨μλ₯Ό μμ±ν΄μ£Όλ©΄ λλ€.
κ²μμ μ€ννκ³ μ μλνλμ§ νμΈν΄λ³΄μ. μ΄μ μ£ΌμΈκ³΅μ 곡격μ μ μ΄ λ°μνλ κ²μ΄ μ λνλλ€.
μ£ΌμΈκ³΅κ³Ό λ§μ°¬κ°μ§λ‘ μ μΊλ¦ν°μκ²λ 곡격μ ꡬνν΄ μ€ μκ°μ΄λ€. μ μΊλ¦ν°μ 곡격 μ λλ©μ΄μ μ λ§λ€μ.
1. enemyμ¬μ μ΄κ³ AnimationPlayerλ Έλλ₯Ό μ νν λ€ attackμ΄λΌλ μ΄λ¦μΌλ‘ μ μ λλ©μ΄μ μ λ§λ λ€.
2. Spriteλ Έλμ textureμμ±μ λν νΈλμ μΆκ°νλ€.
3. attackμ λλ©μ΄μ μ μ΄ κΈΈμ΄λ₯Ό 0.8λ‘ μ€μ νλ€. (루νλ νμ±νμν€μ§ μλλ€)
4. ν€νλ μ 8κ°λ₯Ό 0.1μ΄ κ°κ²©μΌλ‘ λ°°μΉνλ€.
5. graphic/character/enemy ν΄λμ attack_000.png ~ attack_007.png μ΄λ―Έμ§λ€μ κ° ν€νλ μμ μ§μ ν΄μ€λ€.
μ£ΌμΈκ³΅ μΊλ¦ν°μ νΌκ²© μ λλ©μ΄μ λ μ μνμ.
1. playerμ¬μ μ΄κ³ AnimationPlayerλ Έλλ₯Ό μ νν λ€ hitμ΄λΌλ μ΄λ¦μΌλ‘ μ μ λλ©μ΄μ μ λ§λ λ€.
2. Spriteλ Έλμ textureμμ±μ λν νΈλμ μΆκ°νλ€.
3. hitμ λλ©μ΄μ μ μ΄ κΈΈμ΄λ₯Ό 0.2λ‘ μ€μ νλ€. (루νλ νμ±νμν€μ§ μλλ€)
4. ν€νλ μ 1κ°λ₯Ό 0μ΄ μμ μ λ°°μΉνλ€.
5. graphic/character/main_characterν΄λμ hit_000.png μ΄λ―Έμ§λ₯Ό ν€νλ μμ μ§μ ν΄μ€λ€.
μ£ΌμΈκ³΅ μΊλ¦ν°μ νΌκ²© μ λλ©μ΄μ μ μ μνμΌλ©΄ player.gdμ€ν¬λ¦½νΈλ₯Ό μ΄κ³ μ€ν¬λ¦°μ·κ³Ό κ°μ΄ hitν¨μλ₯Ό μΆκ°ν΄μ€λ€.
κ·Έλ¦¬κ³ _processν¨μμ μ€ν¬λ¦°μ·μμ κ°μ‘°λ λΆλΆμ μΆκ°ν΄μ€λ€.
λ€μ enemyμ¬μΌλ‘ λμμ€μ. μ£ΌμΈκ³΅μ 곡격 νμ μ λ§λ€ λμ λ§μ°¬κ°μ§λ‘ Spriteλ Έλ νμμ Area2Dλ₯Ό μμ±, λ κ·Έ νμμ CollisionShape2Dλ Έλλ₯Ό μμ±νλ€.
Area2Dμ μ΄λ¦μ AttackμΌλ‘ μμ ν΄μ€λ€.
attackμ λλ©μ΄μ μ 0.5μ΄ μμ μ μ¬μν€λλ₯Ό λμ 곡격 μ΄λ―Έμ§μ μμΉλ₯Ό κ°λ ν λ€μ, CollisionShape2Dλ Έλμ shapeμμ±μ RectangleShape2Dλ₯Ό λ£κ³ 곡격νμ μ ν¬κΈ°μ μμΉλ₯Ό μ‘μμ€λ€. κ·Έλ¦¬κ³ κ΅¬λΆμ μνμ¬ μμμ λΆμ μμΌλ‘ μ€μ νλ€.
Attackλ Έλμ μΈμ€νν°μμ Layerμ Maskλ₯Ό μ€μ νλ€.
enemy.gd μ€ν¬λ¦½νΈλ₯Ό μ΄κ³ μ€ν¬λ¦°μ·μμ κ°μ‘°λ λΆλΆμ μΆκ°ν΄μ€λ€.
_processν¨μμλ μ€ν¬λ¦°μ·μμ κ°μ‘°λ λΆλΆμ μΆκ°ν΄μ€λ€.
_processν¨μμ λ΄μ© μ€ elseλ¬Έ λ΄λΆμ &βidleβμ &βattackβλ‘ μμ ν΄μ€λ€. μ€ν¬λ¦°μ·μ μ λ³΄κ³ μμ νμ.
λν attackν¨μλ₯Ό μΆκ°νμ.
μ£ΌμΈκ³΅ μΊλ¦ν°μ 곡격μ ꡬνν λμ λ§μ°¬κ°μ§λ‘, enemyμ¬μμ attackμ λλ©μ΄μ μ Call Method Trackμ μΆκ°νκ³ attackν¨μμ λν ν€νλ μμ μΆκ°ν΄μ€λ€.
μ΄μ κ²μμ μ€ννκ³ μ μΊλ¦ν° κ°κΉμ΄ μ κ·Όνλ©΄ μ μ΄ κ³΅κ²©νλ λͺ¨μ΅κ³Ό μ£ΌμΈκ³΅ μΊλ¦ν°κ° νΌκ²© λΉνλ λͺ¨μ΅μ λ³Ό μ μλ€.
λκΈ 0