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 <= 0) break;
}
}
|
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 |