๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ

Unity/AR

[์œ ๋‹ˆํ‹ฐ AR FPS ๊ฒŒ์ž„ ๊ฐœ๋ฐœ] - 3. ์ด ์žฌ์žฅ์ „ & ์ด ๋ฐ˜๋™ / animator.settrigger & animator.crossfadeinfixedtime

728x90
๋ฐ˜์‘ํ˜•

โ˜ž  ๋ณธ ๊ธ€์€ ์ž‘์„ฑ์ž๊ฐ€ ๊ฐœ๋ฐœํ•œ ๋‚ด์šฉ์„ ์ •๋ฆฌํ•œ ๊ธ€๋กœ ์ž˜๋ชป๋œ ์ ์ด ์žˆ์„ ์ˆ˜ ์žˆ์–ด,  ๋ฌธ์ œ๊ฐ€ ์žˆ๋‹ค๋ฉด ๋Œ“๊ธ€๋กœ ๋‚จ๊ฒจ์ฃผ์‹œ๊ธฐ ๋ฐ”๋ž๋‹ˆ๋‹ค.
โ˜ž  ํ•ด๋‹น ๋‚ด์šฉ์„ ๊ณต์œ ํ•˜๊ฒŒ ๋œ๋‹ค๋ฉด, ๋ฐ˜๋“œ์‹œ ์ถœ์ฒ˜๋ฅผ ๊ผญ ๋ช…์‹œํ•ด์ฃผ๊ธฐ ๋ฐ”๋ž๋‹ˆ๋‹ค.

 

https://vrworld.tistory.com/4

 

[AR FPS ๊ฒŒ์ž„] 2. ์  ๋žœ๋ค ์œ„์น˜ ์Šคํฐ & UI์— ์ ์ˆ˜ ๊ฐฑ์‹ 

โ˜ž ๋ณธ ๊ธ€์€ ์ž‘์„ฑ์ž๊ฐ€ ๊ฐœ๋ฐœํ•œ ๋‚ด์šฉ์„ ์ •๋ฆฌํ•œ ๊ธ€๋กœ ์ž˜๋ชป๋œ ์ ์ด ์žˆ์„ ์ˆ˜ ์žˆ์–ด, ๋ฌธ์ œ๊ฐ€ ์žˆ๋‹ค๋ฉด ๋Œ“๊ธ€๋กœ ๋‚จ๊ฒจ์ฃผ์‹œ๊ธฐ ๋ฐ”๋ž๋‹ˆ๋‹ค. โ˜ž ํ•ด๋‹น ๋‚ด์šฉ์„ ๊ณต์œ ํ•˜๊ฒŒ ๋œ๋‹ค๋ฉด, ๋ฐ˜๋“œ์‹œ ์ถœ์ฒ˜๋ฅผ ๊ผญ ๋ช…์‹œํ•ด์ฃผ๊ธฐ ๋ฐ”๋ž๋‹ˆ

vrworld.tistory.com

์ €๋ฒˆ ํฌ์ŠคํŒ…๊นŒ์ง€ ํ•ด์„œ AR FPS ๊ฐœ๋ฐœ์„ ์œ„ํ•œ ์ดˆ๊ธฐ ์„ธํŒ…๊นŒ์ง€ ๊ตฌํ˜„ ์ •๋ฆฌ๋ฅผ ์ ์–ด๋ณด์•˜์Šต๋‹ˆ๋‹ค.

์ด์ œ ์—ฌ๊ธฐ์—์„œ ์žฌ์žฅ์ „ ๊ธฐ๋Šฅ๊ณผ ์ด์„ ์ˆ์„ ๋•Œ ๋ฐ˜๋™ ์• ๋‹ˆ๋ฉ”์ด์…˜ ๋“ฑ์„  ์ถ”๊ฐ€๋กœ ๊ตฌํ˜„ํ•œ  ๋ถ€๋ถ„์„ ์ •๋ฆฌํ•ด๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค.

 

โ˜ž ๊ตฌํ˜„ ์š”์•ฝ
1. ์ด์„ ์ˆ์„ ๋•Œ ๋ฐ˜๋™ ๋ชจ์…˜ (์• ๋‹ˆ๋ฉ”์ด์…˜)
2. ์žฌ์žฅ์ „ ํ–ˆ์„ ๋•Œ ํ”Œ๋ ˆ์ด์–ด UI ๋ณ€ํ™” (ํ˜„์žฌ ์ด์•Œ/ ๋‚จ์€ ์ด์•Œ)
3. ์žฌ์žฅ์ „ ๋ชจ์…˜ ์ถ”๊ฐ€ (์• ๋‹ˆ๋ฉ”์ด์…˜)
4. ํ˜„์žฌ ์ด์•Œ์ด 0๊ฐœ ์ดํ•˜์ผ ๋•Œ 0์„ ์œ ์ง€ํ•˜๋„๋ก ์ฆ‰, ์ด์•Œ์˜ ๊ฐœ์ˆ˜๊ฐ€ '-' ์˜์—ญ๊นŒ์ง€ ๊ฐ€์ง€ ์•Š๋„๋ก ๊ตฌํ˜„.
5. ํ˜„์žฌ ์ด์•Œ์ด 0 ์ฆ‰, ์ด์•Œ์ด ์—†์„ ๋•Œ ์ด์•Œ์ด ๋น„์—ˆ๋‹ค๋Š” ๊ฑธ ์ธ์ง€ํ•˜๊ธฐ ์œ„ํ•œ ์‚ฌ์šด๋“œ ์ถ”๊ฐ€ ๋‹ค์‹œ ์žฌ์žฅ์ „ํ•˜๊ณ  ์ด์„ ์ˆ์„ ๋•Œ ์ด์•Œ ์ดํŽ™ํŠธ, ์ด๊ธฐ ์‚ฌ์šด๋“œ ์žฌ์ƒ
6. ์ด์•Œ์ด ์—†์„ ๋•Œ Raycast ์ฒดํฌ๋ฅผ ์•ˆ ํ•จ. -> ์ฆ‰, ์‚ฌ์šฉ์ž์˜ ์ด๊ตฌ ๋ฐฉํ–ฅ๊ณผ ์ ์˜ ๋ฐฉํ–ฅ์ด ์ผ์น˜ํ•ด๋„ Fire ๋ฒ„ํŠผ์„ ๋ˆŒ๋Ÿฌ๋„ ์ ์€ ์‚ฌ๋ผ์ง€์ง€ ์•Š๋Š”๋‹ค.

โ˜ž ์Šคํฌ๋ฆฝํŠธ ์ถ”๊ฐ€ & ๊ฐœ์„ 
1. ControlArm.cs ์ถ”๊ฐ€ => ์žฌ์žฅ์ „ & ์ด์˜ ๋ฐ˜๋™ ๋ชจ์…˜ ๋‹ด๋‹น
2. PlayerHud.cs ์ถ”๊ฐ€ => ์ด์•Œ UI ๋ณ€ํ™”
3. ManageGun.cs ์ถ”๊ฐ€ => ํ˜„์žฌ ์ด์˜ ์ƒํƒœ (์ด๊ธฐ ์•ˆ์— ์ด์•Œ์ด ์–ผ๋งˆ๋‚˜ ์žˆ๋Š”์ง€ ํŒ๋‹จํ•จ.)
4. HandGunFire ๊ฐœ์„  => checkRaycast()ํ•จ์ˆ˜๋ฅผ ๋งŒ๋“ค์–ด ์ด์•Œ์ด ์žˆ์„ ๋•Œ๋งŒ Raycast ์ฒดํฌํ•˜๋„๋ก ๊ตฌํ˜„.
   shoot() ํ•จ์ˆ˜์—์„œ๋Š” ํ˜„์žฌ ์ด์•Œ ๊ฐœ์ˆ˜์— ๋”ฐ๋ฅธ ๋‹ค๋ฅธ ๋ฐ˜์‘์„ ๋ณด์ด๋„๋ก ๊ตฌํ˜„.

 


 

 

 ์žฌ์žฅ์ „ & ์ด ๋ฐ˜๋™ ๋ชจ์…˜

 

์žฌ์žฅ์ „ Animator

์œ„ ์‚ฌ์ง„์—์„œ ๋นจ๊ฐ„์ƒ‰ ์›์€ ์–ด๋–ค ๋™์ž‘์„ ์ทจํ•  ๊ฒƒ์ธ์ง€์— ๋Œ€ํ•œ Clip๋“ค์ด๊ณ , ํŒŒ๋ž€์ƒ‰ ์›์€ ๊ฐ๊ฐ์˜ ๋ชจ์…˜๋“ค์ด ์–ด๋–ป๊ฒŒ ์ „ํ™˜๋  ๊ฒƒ์ธ์ง€์— ๋Œ€ํ•œ Transition์œผ๋กœ ํŒŒ์•…ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. 

 

Trigger ํƒ€์ž… ๋ณ€์ˆ˜ ์ƒ์„ฑ

Reload(์žฌ์žฅ์ „) ๋ณ€์ˆ˜๋ฅผ Trigger ํƒ€์ž…์œผ๋กœ ๋งŒ๋“ค์–ด ํ•œ๋ฒˆ ์‹คํ–‰ ํ›„ ์—ฐ๊ฒฐ๋œ Transition์— ๋”ฐ๋ผ ๋™์ž‘ ์ „ํ™˜์ด ์ด๋ฃจ์–ด์ง€๋„๋ก ๋งŒ๋“ค์–ด ์ค๋‹ˆ๋‹ค.

 

Reload๋ฅผ ํ–ˆ์„ ๋•Œ ๋ชจ์…˜ ๋™์ž‘

์œ„ ์‚ฌ์ง„์€ New State -> Reload๋กœ ๋ชจ์…˜ ๋™์ž‘์„ ํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. New State๋Š” ์ด์„ ์ฅ๊ณ  ๊ฐ€๋งŒํžˆ ์žˆ๋Š” ์ƒํƒœ, Reload๋Š” ์žฌ์žฅ์ „ ๋™์ž‘์ž…๋‹ˆ๋‹ค.  ์—ฌ๊ธฐ์„œ ์ค‘์š”ํ•œ ๊ฒƒ์€ Conditions์ž…๋‹ˆ๋‹ค. ์กฐ๊ธˆ ์ „์— Triger ํƒ€์ž…์œผ๋กœ ๋งŒ๋“  ํŒŒ๋ผ๋ฏธํ„ฐ Reload๋ฅผ Conditions์œผ๋กœ ์ถ”๊ฐ€ํ•ด์ค€ ๋’ค ์‹คํ–‰๋  ๋•Œ ์œ„ ์‚ฌ์ง„์˜ ๋ชจ์…˜ ๋ณ€ํ™”๊ฐ€ ์ด๋ฃจ์–ด์ง€๊ฒŒ ๋ฉ๋‹ˆ๋‹ค.

 

SetTrigger()๋ฅผ ํ™œ์šฉํ•˜์—ฌ Reload 1ํšŒ ๋™์ž‘

์ด์ œ ์ฝ”๋“œ์—์„œ SetTrigger()๋ฅผ ํ˜ธ์ถœํ•˜์—ฌ ์šฐ๋ฆฌ๊ฐ€ ์กฐ๊ธˆ ์ „์— Triger ํƒ€์ž…์œผ๋กœ ๋งŒ๋“ค์–ด ์ค€ Reload๊ฐ€ 1ํšŒ ์‹คํ–‰๋ฉ๋‹ˆ๋‹ค.

์‹คํ–‰์‹œํ‚จ ๋’ค Conditions์ด Reload์ธ Transiton์„ ๋”ฐ๋ผ ๋ชจ์…˜ ๋ณ€ํ™”๊ฐ€ ์ด๋ฃจ์–ด์ง€๊ฒŒ ๋ฉ๋‹ˆ๋‹ค. 

 

๋‹ค์Œ์€ ์ด์˜ ๋ฐ˜๋™ ๋ชจ์…˜์„ ํ•˜๊ธฐ ์œ„ํ•ด CrossFadeInFixedTime()๋ฅผ ํ˜ธ์ถœํ•ด rebound ๋ผ๋Š” ์ด์˜ ๋ฐ˜๋™ ๋™์ž‘ ์ˆ˜ํ–‰ ํ›„ 0.01์ดˆ ๊ฐ„๊ฒฉ์œผ๋กœ ๋‹ค์Œ ๋™์ž‘์„ ์ˆ˜ํ–‰ํ•˜๊ฒŒ ๋งŒ๋“ค์–ด์ฃผ์—ˆ์Šต๋‹ˆ๋‹ค.

 

์ด ๋ฐ˜๋™ ๋ชจ์…˜

 rebound (์ด ๋ฐ˜๋™) ์ˆ˜ํ–‰ ํ›„ New State(์ด์„ ๊ฐ€์ง€๊ณ  ๋Œ€๊ธฐ ์ƒํƒœ)๋กœ ์ „ํ™˜ํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. ์ฆ‰, CrossFadeInFixedTime() ํ˜ธ์ถœํ•˜์—ฌ 0,01์ดˆ ๊ฐ„๊ฒฉ์œผ๋กœ ๋ชจ์…˜ ๋ณ€ํ™˜์„ ํ•˜๊ฒŒ ๋˜๋Š” ๊ฒ๋‹ˆ๋‹ค.

 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
 
public class ControlArm : MonoBehaviour
{
    [Tooltip("ํ˜„์žฌ ์†Œ์œ ํ•œ ์ด๊ธฐ์˜ ์ด์•Œ์˜ ๊ฐœ์ˆ˜๋ฅผ ๋‹ด๋‹นํ•˜๋Š” ์ปดํฌ๋„ŒํŠธ")]
    [SerializeField] private ManageGun currentGun;   
 
    Animator anis; //์• ๋‹ˆ๋ฉ”์ด์…˜ ๋ณ€์ˆ˜
 
    [Header("Sound")]
    public AudioSource ReloadSound; //์žฌ์žฅ์ „ ์‚ฌ์šด๋“œ
    
    void Start()
    {
        anis = GetComponent<Animator>();
    }
 
    public void work()
    {
        anis.CrossFadeInFixedTime("rebound"0.01f);
    }
 
    public void Reload()
    {
        // ์†Œ์œ ํ•˜๊ณ  ์žˆ๋Š” ์ด์•Œ์ด ์žˆ์œผ๋ฉด ์žฌ์žฅ์ „, ์—†์œผ๋ฉด ์žฌ์žฅ์ „ ๋ถˆ๊ฐ€๋Šฅ
        if (currentGun.carryBulletCount > 0)
        {
            anis.SetTrigger("Reload"); // ์žฌ์žฅ์ „ ๋ชจ์…˜ ์žฌ์ƒ
            ReloadSound.Play();
          
            if (currentGun.carryBulletCount >= currentGun.reloadBulletCount) // ๊ฐ€์ง€๊ณ  ์žˆ๋Š” ์ด์•Œ >= ํƒ„์ฐฝ์— ๋„ฃ์–ด์•ผํ•  ์ด์•Œ ๊ฐœ์ˆ˜
            {   
                currentGun.currentBulletCount = currentGun.reloadBulletCount;
                currentGun.carryBulletCount -= currentGun.reloadBulletCount;
                //ํ˜„์žฌ ์†Œ์œ ํ•œ ์ด์•Œ ๊ฐœ์ˆ˜๊ฐ€ ํƒ„์ฐฝ์— ๋„ฃ์€ ๊ฐœ์ˆ˜๋งŒํผ ๋น ์ง
            }
            else
            {
                // ๊ฐ€์ง€๊ณ  ์žˆ๋Š” ์ด์•Œ์ด ํƒ„์ฐฝ์— ๋„ฃ์–ด์•ผํ•  ์ด์•Œ๋ณด๋‹ค ๋ถ€์กฑํ•œ ๊ฒฝ์šฐ
                currentGun.currentBulletCount = currentGun.carryBulletCount;
                currentGun.carryBulletCount = 0;
            }
        }
    }
 
    public ManageGun GetGun()
    {
        return currentGun;
    }
}
cs

์œ„ ์ฝ”๋“œ๋Š” ์žฌ์žฅ์ „๊ณผ ์ด์˜ ๋ฐ˜๋™ ๋ชจ์…˜ ๋‹ด๋‹น์„ ๊ตฌํ˜„ํ•œ ControlArm ํด๋ž˜์Šค์ž…๋‹ˆ๋‹ค.

ํ˜„์žฌ ์†Œ์œ ํ•œ ์ด๊ธฐ์˜ ์ด์•Œ ์ •๋ณด๋ฅผ ์•Œ๊ธฐ ์œ„ํ•ด ManageGun ์ปดํฌ๋„ŒํŠธ๋ฅผ ๊ฐ€์ ธ์˜ค๊ฒŒ ๋ฉ๋‹ˆ๋‹ค. (์ฝ”๋“œ 8๋ฒˆ์งธ ์ค„)

Reload() ํ•จ์ˆ˜ ์•ˆ์— ์žˆ๋Š” if / else ๋ฌธ์€ ํ˜„์žฌ ์†Œ์œ ํ•˜๊ณ  ์žˆ๋Š” ์ด์•Œ ๊ฐœ์ˆ˜์™€ ํƒ„์ฐฝ์— ๋„ฃ์–ด์•ผ ํ•  ์ด์•Œ ๊ฐœ์ˆ˜๋ฅผ ๋น„๊ตํ•˜์—ฌ ์žฌ์žฅ์ „์ด ์ •์ƒ์ ์œผ๋กœ ์ด๋ฃจ์–ด์งˆ ์ˆ˜ ์žˆ๋„๋ก ๋งŒ๋“ค์—ˆ์Šต๋‹ˆ๋‹ค.

 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
 
public class ManageGun : MonoBehaviour
{
    [HideInInspector] public string gunName; // ํ˜„์žฌ ์ด์˜ ์ด๋ฆ„.
 
    [Header("Bullet")]
    [Tooltip("์ด์•Œ ์žฌ์žฅ์ „ ๊ฐœ์ˆ˜")]
    public int reloadBulletCount = 20;
    [Tooltip("ํ˜„์žฌ ํƒ„์•Œ์ง‘์— ๋‚จ์•„์žˆ๋Š” ์ด์•Œ์˜ ๊ฐœ์ˆ˜")]
    public int currentBulletCount = 20;
    [Tooltip("์ตœ๋Œ€ ์†Œ์œ  ๊ฐ€๋Šฅ ์ด์•Œ ๊ฐœ์ˆ˜")]
    public int maxBulletCount = 60;
    [Tooltip("ํ˜„์žฌ ์†Œ์œ ํ•˜๊ณ  ์žˆ๋Š” ์ด์•Œ ๊ฐœ์ˆ˜")]
    public int carryBulletCount = 60;
 
}
cs

ํ˜„์žฌ ์ด์˜ ์ƒํƒœ(์žฌ์žฅ์ „์„ ์–ผ๋งˆ๋‚˜ ํ•  ๊ฒƒ์ธ์ง€, ์†Œ์œ ํ•œ ์ด์•Œ, ํƒ„์ฐฝ์— ์–ผ๋งˆ๋‚˜ ๋„ฃ์–ด์•ผ ํ•˜๋Š”์ง€ ๋“ฑ)๋ฅผ ์•Œ ์ˆ˜ ์žˆ๋Š” ManageGun ํด๋ž˜์Šค์ž…๋‹ˆ๋‹ค.

 

 

Handgun_Aim_Pose ์˜ค๋ธŒ์ ํŠธ

์ด์ œ ๋งŒ๋“ค์—ˆ๋˜ ์• ๋‹ˆ๋ฉ”์ด์…˜๊ณผ ํ•„์š”ํ•œ ์ปดํฌ๋„ŒํŠธ๋ฅผ ๋„ฃ์–ด์ค€ ๋ชจ์Šต์ž…๋‹ˆ๋‹ค.  Handgun_Aim_Pose ์˜ค๋ธŒ์ ํŠธ๋Š” ํ”Œ๋ ˆ์ด์–ด์˜ ํŒ” ์ž…๋‹ˆ๋‹ค. ์žฌ์žฅ์ „์„ ๋‹ด๋‹นํ•˜๋Š” ์ปดํฌ๋„ŒํŠธ๋ฅผ ์ด์— ๋„ฃ์–ด์•ผ ํ• ์ง€, ํ”Œ๋ ˆ์ด์–ด์˜ ํŒ”์— ๋„ฃ์–ด์ค˜์•ผ ํ• ์ง€ ๊ณ ๋ฏผํ–ˆ์—ˆ๋Š”๋ฐ, ์•„๋ฌด๋ž˜๋„ ํƒ„์ฐฝ์„ ์ƒˆ๋กœ ๋ฐ”๊ฟ€ ๋•Œ๋Š” ํŒ”์˜ ๊ฐœ์ž…์ด ๋” ํฌ๋‹ค๊ณ  ์ƒ๊ฐ๋ผ  ํ”Œ๋ ˆ์ด์–ด์˜ ํŒ” ์˜ค๋ธŒ์ ํŠธ์ธ Handgun_Aim_Pose์— ๋„ฃ์–ด์ฃผ๊ฒŒ ๋˜์—ˆ์Šต๋‹ˆ๋‹ค.

 

 

Fire ๋ฒ„ํŠผ์„ ๋ˆ„๋ฅผ ๋•Œ๋งˆ๋‹ค ์ด ๋ฐ˜๋™ ๋ชจ์…˜ ์ง„ํ–‰

 

Reload ๋ฒ„ํŠผ ๋ˆ„๋ฅผ ๋•Œ๋งˆ๋‹ค ์žฌ์žฅ์ „ ๋ชจ์…˜ ์ง„ํ–‰

 

UI์— Fire ๋ฒ„ํŠผ๊ณผ Reload ๋ฒ„ํŠผ์„ ๋ˆ„๋ฅผ ๋•Œ ๋นจ๊ฐ„์ƒ‰ ์›์œผ๋กœ ๊ทธ๋ ค์ง„ ์ฝ”๋“œ๊ฐ€ ์‹คํ–‰ํ•˜์—ฌ ๋ชจ์…˜์ด ์ •์ƒ์ ์œผ๋กœ ์ด๋ฃจ์–ด์ง€๋„๋ก On Click() ํ•จ์ˆ˜์—์„œ ์ฒ˜๋ฆฌํ•ด์ฃผ์—ˆ์Šต๋‹ˆ๋‹ค.

 

 

 


 

 

 

 

 ์ค‘์š” - ์ด ์žฌ์žฅ์ „ ๋ชจ์…˜ ์˜ค๋ฅ˜

 

์ฒซ ๋ฒˆ์งธ ์‚ฌ์ง„์€ ํ”Œ๋ ˆ์ด์–ด ํŒ” ์˜ค๋ธŒ์ ํŠธ์˜ ์ž์‹ ์˜ค๋ธŒ์ ํŠธ๋ฅผ ๊ถŒ์ด ์˜ค๋ธŒ์ ํŠธ๋กœ ๋„ฃ์€ ๋ชจ์Šต์ž…๋‹ˆ๋‹ค.

ํ•˜์ง€๋งŒ ๋‘ ๋ฒˆ์งธ ์‚ฌ์ง„์ฒ˜๋Ÿผ ์žฌ์žฅ์ „ ๋ชจ์…˜ ๋™์ž‘์„ ํ•  ๋•Œ ํ”Œ๋ ˆ์ด์–ด์˜ ํŒ”์ด ์ด์„ ๊ฐ€์ง€๊ณ  ์žฌ์žฅ์ „ํ•˜์ง€ ์•Š๊ณ , ์ด๋งŒ ๊ณต์ค‘์— ๋‘ฅ๋‘ฅ ๋–  ์žˆ๋Š” ๋ชจ์Šต์„ ๋ณด์ด๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค.

 

์˜ค๋ฅธ์ชฝ ์†์„ ๋‹ด๋‹นํ•˜๋Š” ik_hand_r์— HandGun ์˜ค๋ธŒ์ ํŠธ๋ฅผ ๋„ฃ์–ด์ค€ ๋ชจ์Šต

 

์œ„ ์‚ฌ์ง„์ฒ˜๋Ÿผ ik_hand_r ์•ˆ์— HandGun(๊ถŒ์ด)์˜ค๋ธŒ์ ํŠธ๋ฅผ ๋„ฃ์–ด์ฃผ๋ฉด ์žฌ์žฅ์ „์˜ ๋ชจ์Šต์ด ์ •์ƒ์ ์œผ๋กœ ๋™์ž‘ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

 

 

 

 

 

 

728x90
๋ฐ˜์‘ํ˜•