Unity/2D RPG

회복 아이템 by Unity

YunSeong 2021. 7. 18. 02:06
728x90
반응형

회복 아이템을 구현하기 위해서 아이템 오브젝트의 c# component에서 구현하려고 했으나 player가 닿아서 먹는다면 item은 없어질 것이고 그러면 그 후에 지속적으로 회복을 시켜줄 수 없고 중첩에 대해서도 복잡해지기에 player의 c# component에서 대부분의 기능을 구현했다.

 

 

 

 

 

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
int HealTime = 0;
 
public void Healed(int HealTime)
{
    if (this.HealTime > 0)
    {
        this.HealTime += HealTime;
    }
    else if (this.HealTime <= 0)
    {
        this.HealTime = HealTime;
        StartCoroutine("Healing");
    }
}
 
IEnumerator Healing()
{
    yield return new WaitForSeconds(1);
    while (true)
    {
        this.HealTime -= 1;
        this.Hp += 1;
 
        yield return new WaitForSeconds(1);
        if (this.HealTime <= 0break;
    }
}
cs

위 코드는 player의 hp를 관리하는 c# component에 구현되어있는 코드이다. 

외부에서 Healed() 함수를 호출한다면

HealTime>0일 때는 Healing이 시작됐을 것이기 때문에 그저 남은 HealTime에 parameter로 받아온 HealTime을 더해주고 

HealTime <=0이라면 Healing이 시작되지 않았을 것이기 때문에 coroutine을 실행시켜주고 HealTime도 초기화해준다. 

 

Healing()에서는 1초마다 HealTime을 1 빼고 Hp에는 1을 더해주고 HealTime <=0이 된다면 반복문이 파괴되면서 이 함수가 종료되게 된다. 

 

 

 

 

 

 

 

 

1
2
3
4
5
6
7
8
void OnTriggerEnter2D(Collider2D other)
{
    if (other.tag == "Player"//플레이어가 닿으면 아이템을 먹은 것으로 판정
    {
       PlayerComponent.Healed(5);
        Destroy(gameObject);
    }
}
cs

Trigger을 설정한 item에 위와 같은 코드를 이용해서 player와 닿았을 때 Healed()함수를 호출해서 회복을 할 수 있게 구현했다. 이렇게 하면 자연스러운 회복 아이템을 만들 수 있다. 

728x90
반응형

'Unity > 2D RPG' 카테고리의 다른 글

friction, Collider2D in Unity  (0) 2021.08.02
캐릭터(원거리 공격) byUnity  (0) 2021.07.24
캐릭터(슬라임) by Unity  (0) 2021.07.18
원거리 공격 by Unity  (0) 2021.07.14
카메라 무빙 by Unity  (0) 2021.07.08