이번 μ‹œκ°„μ—λŠ” 주인곡, 적 μΊλ¦­ν„°μ˜ 곡격 κΈ°λŠ₯κ³Ό 그에 λŒ€μ‘λ˜λŠ” 피격을 κ΅¬ν˜„ν•  것이닀.

7c82fb6bb5836ee87eb1d19528d5270306f3282c27939f

μš°μ„  ν”Œλ ˆμ΄μ–΄μ˜ 곡격 μ• λ‹ˆλ©”μ΄μ…˜λΆ€ν„° λ§Œλ“€μž.

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 이미지듀을 각 ν‚€ν”„λ ˆμž„μ— μ§€μ •ν•΄μ€€λ‹€.

7f82fb6bb58360e87eb1d19528d527030896717b0158f7

곡격 μ• λ‹ˆλ©”μ΄μ…˜μ„ λ§Œλ“€μ—ˆλ‹€λ©΄ player.gd슀크립트λ₯Ό μ—΄κ³  _processν•¨μˆ˜μ˜ λ‚΄μš©μ„ μŠ€ν¬λ¦°μƒ·κ³Ό 같이 μˆ˜μ •ν•΄μ€€λ‹€.

7e82fb6bb58068e87eb1d19528d52703743e56f73e1f

κ²Œμž„μ„ μ‹€ν–‰μ‹œν‚€κ³  Zν‚€λ₯Ό λˆ„λ₯΄λ©΄ 곡격 μ• λ‹ˆλ©”μ΄μ…˜μ΄ μ‹€ν–‰λœλ‹€.

7982fb6bb58668e87eb1d19528d52703480c2565b8f64d

곡격 μ• λ‹ˆλ©”μ΄μ…˜μ΄ μ œλŒ€λ‘œ μž‘λ™ν•¨μ„ ν™•μΈν–ˆμœΌλ©΄ 곡격을 λ§žμ•„μ€„ 적 μΊλ¦­ν„°μ˜ 피격 μ• λ‹ˆλ©”μ΄μ…˜μ„ λ§Œλ“€μž.

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 이미지듀을 각 ν‚€ν”„λ ˆμž„μ— μ§€μ •ν•΄μ€€λ‹€.

7882fb6bb5866ae87eb1d19528d52703291742798c9620

이제 enemy.gd 슀크립트λ₯Ό μ—° λ‹€μŒ μŠ€ν¬λ¦°μƒ·κ³Ό 같이 μƒˆλ‘œμš΄ hitν•¨μˆ˜λ₯Ό μΆ”κ°€ν•΄μ£Όκ³ 

7b82fb6bb5866be87eb1d19528d527034a0daf777d7827

_processν•¨μˆ˜λ₯Ό μŠ€ν¬λ¦°μƒ·κ³Ό 같이 μˆ˜μ •ν•΄μ€€λ‹€.

7a82fb6bb58469e87eb1d19528d52703d179ed18e66d

이제 playerμ”¬μœΌλ‘œ λŒμ•„κ°€μž.

곡격 μ• λ‹ˆλ©”μ΄μ…˜μ˜ μ΄λ―Έμ§€λ‘œλΆ€ν„° 곡격 νŒμ •μ˜ μœ„μΉ˜λ₯Ό κ°€λŠ ν•˜κΈ° μœ„ν•˜μ—¬ attackμ• λ‹ˆλ©”μ΄μ…˜μ˜ 2번째 ν‚€ν”„λ ˆμž„μ— μž¬μƒ ν—€λ“œλ₯Ό λ§žμΆ°λ†“μž. 그리고 Spriteλ…Έλ“œμ˜ ν•˜μœ„μ— Area2Dλ…Έλ“œλ₯Ό μƒμ„±ν•˜κ³  또 κ·Έ ν•˜μœ„μ— CollisionShape2Dλ…Έλ“œλ₯Ό μΆ”κ°€ν•΄μ€€λ‹€.

7582fb6bb58469e87eb1d19528d52703b39c385f44027b

CollisionShape2D의 shape속성에 RectangleShape2Dλ₯Ό λ„£μ–΄μ£Όκ³  곡격 νŒμ •μ˜ λ²”μœ„λ₯Ό μ‘°μ ˆν•΄μ€€λ‹€. 그리고 λ‹€λ₯Έ CollisionShape2D와 ν—·κ°ˆλ¦¬μ§€ μ•Šλ„λ‘ debug_colorλ₯Ό 뢉은 μƒ‰μœΌλ‘œ μ„€μ •ν•˜μž.

7482fb6bb5846ae87eb1d19528d527038db02793d7ee

Area2D의 이름을 Attack으둜 μˆ˜μ •ν•˜κ³ 

7cedef0da8826ef220afd8b236ef203e9201c653cbd2b2

μΈμŠ€νŽ™ν„°μ—μ„œ Layer속성과 Mask속성을 μŠ€ν¬λ¦°μƒ·κ³Ό 같이 μ§€μ •ν•œλ‹€.

7cecef0da8826ef020afd8b236ef203e24909b801a3dc0f9

player.gd슀크립트λ₯Ό μ—΄κ³  μŠ€ν¬λ¦°μƒ·μ˜ κ°•μ‘°λœ 뢀뢄듀을 μΆ”κ°€ν•΄μ€€λ‹€.

7cefef0da8826ef120afd8b236ef203e0b56572c22cf7b67

λ˜ν•œ μƒˆλ‘œμš΄ attackν•¨μˆ˜λ₯Ό μΆ”κ°€λ‘œ μž‘μ„±ν•œλ‹€.

7ceeef0da8826efe20afd8b236ef203e7791e40edad320

이제 attackμ• λ‹ˆλ©”μ΄μ…˜μ˜ νŠΉμ • μž¬μƒ μ‹œμ μ—μ„œ 방금 μž‘μ„±ν•œ attackν•¨μˆ˜κ°€ μž‘λ™ν•˜λ„λ‘ ν•΄μ•Ό ν•œλ‹€. 이λ₯Ό μœ„ν•˜μ—¬ [Add Track]λ²„νŠΌμ„ ν΄λ¦­ν•˜κ³ 

7ce9ef0da8826eff20afd8b236ef203e926e0ea911d8ee

메뉴 μ€‘μ—μ„œ [Call Method Track]을 μ„ νƒν•œλ‹€.

7ce8ef0da8826ff720afd8b236ef203eb36eb2642d8c80

λ…Έλ“œλ₯Ό μ„ νƒν•˜λŠ” 창이 λœ¨λŠ”λ°, μ΅œμƒμœ„μ˜ Playerλ…Έλ“œλ₯Ό μ„ νƒν•˜κ³  OKλ²„νŠΌμ„ ν΄λ¦­ν•˜λ©΄ λœλ‹€.

7ceaef0da8826ff520afd8b236ef203edbc4749bbbf6fb

μ΄λ ‡κ²Œ attackμ• λ‹ˆλ©”μ΄μ…˜μ— μƒˆλ‘œμš΄ νŠΈλž™μ΄ μƒμ„±λ˜μ—ˆλ‹€. 이 νŠΈλž™μ€ μƒμ„±μ‹œ μ„ νƒν•œ λ…Έλ“œμ— ν¬ν•¨λœ ν•¨μˆ˜λ₯Ό μž‘λ™μ‹œν‚€λŠ” 것이 κ°€λŠ₯ν•˜λ‹€. νŠΈλž™μ„ μš°ν΄λ¦­ν•˜λ©΄ λ‚˜νƒ€λ‚˜λŠ” [Insert Key]메뉴λ₯Ό ν΄λ¦­ν•˜μž.

7ce4ef0da8826ff320afd8b236ef203e2a54244057b2d7

그러면 Player에 ν¬ν•¨λœ ν•¨μˆ˜λ“€μ„ λ‚˜μ—΄ν•œ λͺ©λ‘μ΄ λ‚˜νƒ€λ‚˜λŠ”λ°, 이 μ€‘μ—μ„œ attackν•¨μˆ˜λ₯Ό μ„ νƒν•˜κ³  [Open]λ²„νŠΌμ„ ν΄λ¦­ν•œλ‹€.

7fedef0da8826ff020afd8b236ef203eb65a95eead23ef

그럼 μ΄λ ‡κ²Œ attackν•¨μˆ˜μ— λŒ€ν•œ ν‚€ν”„λ ˆμž„μ΄ μƒμ„±λœλ‹€.

7fecef0da8826ffe20afd8b236ef203eed85ab02d1e595

κ²Œμž„μ„ μ‹€ν–‰ν•˜κ³  μ μ—κ²Œ λ‹€κ°€κ°€ κ³΅κ²©ν•˜λ©΄ 적 μΊλ¦­ν„°μ˜ 피격 λͺ¨μ…˜μ΄ μž¬μƒλ  것이닀.

그런데 주인곡 캐릭터가 μ μ—κ²Œ κ°€λ €μ§€λ‹ˆ 보기가 μ’€ λΆˆνŽΈν•˜λ‹€. 주인곡 캐릭터가 잘 보이도둝 κ°€μž₯ μ•žμ— λ‚˜μ˜€κ²Œ ν•˜κ³  μ’‹κ² λŠ” 데, stage_1의 씬 λ…μ—μ„œ 주인곡 캐릭터 씬을 μˆ˜λ™μœΌλ‘œ λ“œλž˜κ·Έν•˜μ—¬ λ…Έλ“œλ“€ 쀑 κ°€μž₯ μ•„λž˜μ— μœ„μΉ˜μ‹œν‚€λ©΄ λ˜κ² μœΌλ‚˜, 그러면 λ…Έλ“œλ₯Ό μΆ”κ°€ν•  λ•Œλ§ˆλ‹€ 이λ₯Ό μ‹ κ²½μ¨μ€˜μ•Όν•œλ‹€. κ·ΈλŸ¬λ‹ˆ 슀크립트λ₯Ό μ΄μš©ν•΄μ„œ 주인곡이 항상 κ°€μž₯ μ•žμ— λ‚˜μ˜€λ„λ‘ λ§Œλ“€μ–΄λ³΄μž.

7fefef0da8826fff20afd8b236ef203ee950ea4df68da9

ν•΄μ•Όν•  일은 κ°„λ‹¨ν•˜λ‹€. μŠ€ν¬λ¦°μƒ·κ³Ό 같이 player.gd슀크립트의 _processν•¨μˆ˜μ— move_to_frontν•¨μˆ˜λ₯Ό μž‘μ„±ν•΄μ£Όλ©΄ λœλ‹€.

7feeef0da88260f620afd8b236ef203e2f4d55741edfdb

κ²Œμž„μ„ μ‹€ν–‰ν•˜κ³  잘 μž‘λ™ν•˜λŠ”μ§€ ν™•μΈν•΄λ³΄μž. 이제 주인곡의 곡격에 적이 λ°˜μ‘ν•˜λŠ” 것이 잘 λ‚˜νƒ€λ‚œλ‹€.

7fe9ef0da88261f120afd8b236ef203e4a617a8e9a8aa545

주인곡과 λ§ˆμ°¬κ°€μ§€λ‘œ 적 μΊλ¦­ν„°μ—κ²Œλ„ 곡격을 κ΅¬ν˜„ν•΄ 쀄 μ‹œκ°„μ΄λ‹€. 적 μΊλ¦­ν„°μ˜ 곡격 μ• λ‹ˆλ©”μ΄μ…˜μ„ λ§Œλ“€μž.

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 이미지듀을 각 ν‚€ν”„λ ˆμž„μ— μ§€μ •ν•΄μ€€λ‹€.

7fe8ef0da88368f320afd8b236ef203e78a851910599da3c

주인곡 μΊλ¦­ν„°μ˜ 피격 μ• λ‹ˆλ©”μ΄μ…˜λ„ μ œμž‘ν•˜μž.

1. player씬을 μ—΄κ³  AnimationPlayerλ…Έλ“œλ₯Ό μ„ νƒν•œ λ’€ hitμ΄λΌλŠ” μ΄λ¦„μœΌλ‘œ μƒˆ μ• λ‹ˆλ©”μ΄μ…˜μ„ λ§Œλ“ λ‹€.

2. Spriteλ…Έλ“œμ˜ texture속성에 λŒ€ν•œ νŠΈλž™μ„ μΆ”κ°€ν•œλ‹€.

3. hitμ• λ‹ˆλ©”μ΄μ…˜μ˜ 총 길이λ₯Ό 0.2둜 μ„€μ •ν•œλ‹€. (λ£¨ν”„λŠ” ν™œμ„±ν™”μ‹œν‚€μ§€ μ•ŠλŠ”λ‹€)

4. ν‚€ν”„λ ˆμž„ 1개λ₯Ό 0초 μ‹œμ μ— λ°°μΉ˜ν•œλ‹€.

5. graphic/character/main_characterν΄λ”μ˜ hit_000.png 이미지λ₯Ό ν‚€ν”„λ ˆμž„μ— μ§€μ •ν•΄μ€€λ‹€.

7febef0da88368f020afd8b236ef203e04c1622316938eff

주인곡 μΊλ¦­ν„°μ˜ 피격 μ• λ‹ˆλ©”μ΄μ…˜μ„ μ œμž‘ν–ˆμœΌλ©΄ player.gd슀크립트λ₯Ό μ—΄κ³  μŠ€ν¬λ¦°μƒ·κ³Ό 같이 hitν•¨μˆ˜λ₯Ό μΆ”κ°€ν•΄μ€€λ‹€.

7feaef0da88368f120afd8b236ef203eaab146dbefe9c455

그리고 _processν•¨μˆ˜μ— μŠ€ν¬λ¦°μƒ·μ—μ„œ κ°•μ‘°λœ 뢀뢄을 μΆ”κ°€ν•΄μ€€λ‹€.

7fe5ef0da88369f020afd8b236ef203e1cad2b6befad7f

λ‹€μ‹œ enemyμ”¬μœΌλ‘œ λŒμ•„μ˜€μž. 주인곡의 곡격 νŒμ •μ„ λ§Œλ“€ λ•Œμ™€ λ§ˆμ°¬κ°€μ§€λ‘œ Spriteλ…Έλ“œ ν•˜μœ„μ— Area2Dλ₯Ό 생성, 또 κ·Έ ν•˜μœ„μ— CollisionShape2Dλ…Έλ“œλ₯Ό μƒμ„±ν•œλ‹€.

Area2D의 이름은 Attack으둜 μˆ˜μ •ν•΄μ€€λ‹€.

7fe4ef0da88369f020afd8b236ef203e2a9eb0217d8dea8b


7eedef0da88369fe20afd8b236ef203eab88a4a38c31bdad

attackμ• λ‹ˆλ©”μ΄μ…˜μ˜ 0.5초 μ‹œμ μ— μž¬μƒν—€λ“œλ₯Ό 놓아 곡격 μ΄λ―Έμ§€μ˜ μœ„μΉ˜λ₯Ό κ°€λŠ ν•œ λ‹€μŒ, CollisionShape2Dλ…Έλ“œμ˜ shape속성에 RectangleShape2Dλ₯Ό λ„£κ³  κ³΅κ²©νŒμ •μ˜ 크기와 μœ„μΉ˜λ₯Ό μž‘μ•„μ€€λ‹€. 그리고 ꡬ뢄을 μœ„ν•˜μ—¬ 색상을 뢉은 μƒ‰μœΌλ‘œ μ„€μ •ν•œλ‹€.

7eecef0da8836af620afd8b236ef203e3e77256c8598fbc2

Attackλ…Έλ“œμ˜ μΈμŠ€νŽ™ν„°μ—μ„œ Layer와 Maskλ₯Ό μ„€μ •ν•œλ‹€.

7eefef0da8836af720afd8b236ef203ea04837da8e749104

enemy.gd 슀크립트λ₯Ό μ—΄κ³  μŠ€ν¬λ¦°μƒ·μ—μ„œ κ°•μ‘°λœ 뢀뢄을 μΆ”κ°€ν•΄μ€€λ‹€.

7eeeef0da8836af520afd8b236ef203eabff4d0e3d12be

_processν•¨μˆ˜μ—λ„ μŠ€ν¬λ¦°μƒ·μ—μ„œ κ°•μ‘°λœ 뢀뢄을 μΆ”κ°€ν•΄μ€€λ‹€.

7ee9ef0da8836af320afd8b236ef203eec3a43420c76b0cd

_processν•¨μˆ˜μ˜ λ‚΄μš© 쀑 elseλ¬Έ λ‚΄λΆ€μ˜ &”idle”을 &”attackβ€λ‘œ μˆ˜μ •ν•΄μ€€λ‹€. μŠ€ν¬λ¦°μƒ·μ„ 잘 보고 μˆ˜μ •ν•˜μž.

7ee8ef0da8836af120afd8b236ef203ebe1249f66f4dd62e

λ˜ν•œ attackν•¨μˆ˜λ₯Ό μΆ”κ°€ν•˜μž.

7eebef0da8836afe20afd8b236ef203e1f832865d6c3af


7eeaef0da8836aff20afd8b236ef203e87d7d8a61c8fa5


7ee5ef0da8836bf720afd8b236ef203ed39ca813b19f92


7ee4ef0da8836bf520afd8b236ef203e887d4c3f660da9


79edef0da8836bf320afd8b236ef203ebd64a9cd9beb0d


79ecef0da8836bf020afd8b236ef203edd658bb4d996d4

주인곡 μΊλ¦­ν„°μ˜ 곡격을 κ΅¬ν˜„ν•  λ•Œμ™€ λ§ˆμ°¬κ°€μ§€λ‘œ, enemyμ”¬μ—μ„œ attackμ• λ‹ˆλ©”μ΄μ…˜μ— Call Method Track을 μΆ”κ°€ν•˜κ³  attackν•¨μˆ˜μ— λŒ€ν•œ ν‚€ν”„λ ˆμž„μ„ μΆ”κ°€ν•΄μ€€λ‹€.

79efef0da8836bfe20afd8b236ef203e56765e40ebb289

이제 κ²Œμž„μ„ μ‹€ν–‰ν•˜κ³  적 캐릭터 κ°€κΉŒμ΄ μ ‘κ·Όν•˜λ©΄ 적이 κ³΅κ²©ν•˜λŠ” λͺ¨μŠ΅κ³Ό 주인곡 캐릭터가 피격 λ‹Ήν•˜λŠ” λͺ¨μŠ΅μ„ λ³Ό 수 μžˆλ‹€.