1. ์ฝ๋ฃจํด์ ์ฌ์ฉํ๋ ์ด์
์ฝ๋ฃจํด์ ์ด๋ค ํ๋์ ๋๋ ์ด๋ฅผ ์ฃผ๊ฑฐ๋ ์ ์ง์ ์ผ๋ก ํ๊ณ ์ ํ ๋ ์ฌ์ฉํฉ๋๋ค.
Update ๋ฌธ์ ํ๋ ์ ๋จ์๋ก ์คํ์ด ๋๊ธฐ ๋๋ฌธ์ Update ๋ฌธ ๋ด์์ ์ ์ง์ ์ผ๋ก ๋ณํ๋ ํจ์๋ฅผ ํธ์ถํ๋ค๊ณ ํด์ ์ํ๋ ๋๋ก ์คํ๋์ง ์๊ณ ํ ํ๋ ์ ๋ง์ ์๋ํ๊ฒ ๋ฉ๋๋ค.
๋ฐ๋ผ์ ์๋์ ๊ฐ์ด ์ฝ๋๋ฅผ ์ง๋ฉด ํ ํ๋ ์ ๋ง์ 3๊ฐ์ prefab ์ค๋ธ์ ํธ๊ฐ ์์ฑ๋๊ฒ ๋ฉ๋๋ค.
1
2
3
4
5
6
7
8
9
10
11
12
|
void Update()
{
if (Input.GetKeyDown("s")) {
Spawn();} }
void Spawn()
{
for(int i=0; i<3; i++)
{
Instantiate(prefab, gameObject.transform.position, gameObject.transform.rotation);
}
}
|
cs |
2. ์ฝ๋ฃจํด ์ฌ์ฉ๋ฒ
๊ทธ๋ ๋ค๋ฉด ์ฝ๋ฃจํด์ ์ฌ์ฉํ๋ฉด ์ด๋ป๊ฒ ์ ์ง์ ์ผ๋ก ์คํ๋๊ฒ ํ ์ ์๋์ง ์ฝ๋ฃจํด ์ฌ์ฉ๋ฒ์ ์ค๋ช ํ๋ฉด์ ๊ฐ์ด ๋ณด๊ฒ ์ต๋๋ค.
์ฐ๋ฆฌ๋ ์ฝ๋ฃจํด์ ์ด์ฉํ์ฌ 1์ด์ ํ ๋ฒ์ฉ ์ด 3๊ฐ์ ์ค๋ธ์ ํธ๋ฅผ ์์ฑํ๊ณ ์ ํฉ๋๋ค.
- ์ฝ๋ฃจํด์ IEnumerator๋ผ๋ ๋ฐํํ์ ๊ฐ์ง๋๋ค.
- ์์ ๊ฐ์ด IEnumerator ํจ์์ด๋ฆ()์ ํํ๋ก ์ ์ธํฉ๋๋ค.
- yield return์ด ํ์์ ๋๋ค. ๋ณดํต ์๋ ๋ ์ข ๋ฅ๋ฅผ ๋ง์ด ์ฌ์ฉํ๋๋ฐ,
- yield return null; // ํ ํ๋ ์์ ์ฝ๋๋ค.
- yield return new WaitForSeconds(์๊ฐ); // ๋งค๊ฐ๋ณ์์ ์ ๋ ฅํ ์ด๋งํผ ์ฝ๋๋ค.
๋ฐ๋ผ์ ์๋์ ๊ฐ์ด ์ฝ๋ฃจํด์ ๋ง๋ค ์ ์์ต๋๋ค.
1
2
3
4
5
6
7
8
|
IEnumerator Spawn()
{
for (int i = 0; i < 3; i++)
{
Instantiate(prefab, gameObject.transform.position, gameObject.transform.rotation);
yield return new WaitForSeconds(1f);
}
}
|
cs |
๊ทธ๋ฆฌ๊ณ ์ฝ๋ฃจํด์ ์ผ๋ฐ์ ์ธ ํจ์์ ์คํํ๋ ๋ฐฉ๋ฒ์ด ๋ค๋ฅธ๋ฐ ์๋ ๋ ํจ์๋ก ์คํ๊ณผ ์ค์ง๋ฅผ ์ปจํธ๋กคํฉ๋๋ค.
- StartCoroutine() : ์คํ
- StopCoroutine() : ์ค์ง
1
2
3
4
5
6
7
8
9
10
11
12
|
void Update()
{
if (Input.GetKeyDown("s"))
{
StartCoroutine("Spawn");
}
if (Input.GetKeyDown("p"))
{
StopCoroutine("Spawn");
}
}
|
cs |
์๋๋ ์ ๊ฐ ์ด๋ฒ์ ํ ํ๋ก์ ํธ ๊ฒ์์ ๋ง๋ค๋ฉด์ ์ฌ์ฉํ ์ฝ๋ฃจํด ์ฝ๋์ ๋๋ค.
ํผ๊ฒฉ ์ ์ผ์ ์๊ฐ ๋์ ๋ฌด์ ์ํ๋ฅผ ์ฒดํฌํ๋ ๋ณ์๋ฅผ true๋ก ๋ง๋ค๊ณ ์คํ๋ผ์ดํธ์ ํฌ๋ช ๋๋ฅผ ์กฐ์ ํด ๊น๋นก๊ฑฐ๋ฆฌ๋ ๊ฒ์ฒ๋ผ ๋ณด์ด๊ฒ ๋ง๋ค์์ต๋๋ค.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
|
IEnumerator Invincibility()
{
isInvincibility = true;
invincibilityPlatform.SetActive(true);
for (int i=0; i<invincibilityDuration; i++)
{
playerSprite.color = new Color(255, 255, 255, 0.4f);
yield return new WaitForSeconds(0.5f);
playerSprite.color = new Color(255, 255, 255, 0.7f);
yield return new WaitForSeconds(0.5f);
}
isInvincibility = false;
invincibilityPlatform.SetActive(false);
playerSprite.color = new Color(255, 255, 255, 1);
}
|
cs |

์ฐธ๊ณ ๋ฌธํ : https://docs.unity3d.com/kr/530/Manual/Coroutines.html (Unity ๊ณต์ ๋ฌธ์)
'๐งโ๐ป ์ฝ๋ฉ > Unity' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[Practice Unity] ํ๋กํผํฐ ์ฌ์ฉ๋ฒ ์ ๋ฆฌ (0) | 2022.12.29 |
---|---|
๋ ํธ๋ก์ ์ ๋ํฐ ๊ฒ์ ํ๋ก๊ทธ๋๋ฐ ์์ผ์ค ํ๊ธฐ (0) | 2022.12.26 |
[Practice Unity] Unity 2D - Tile Map (0) | 2022.11.27 |
22.10.08 Unity ๊ณต๋ถ ์ผ์ง (0) | 2022.10.09 |
22.09.29 Unity ๊ณต๋ถ ์ผ์ง (0) | 2022.09.29 |