void AttackCommand()
{
if (f_currentTime <= 0)
{
if (Input.GetKeyDown(KeyCode.Z) && rigidbody2d.velocity.y == 0)
{
b_AttackP = true;
}
if(b_AttackP)
{
animator.SetTrigger("Player_punchT");
animator.SetBool("Player_stay", false);
animator.SetBool("Player_walk", false);
Collider2D[] hitEnemyP = Physics2D.Overlap/CircleAll(PunchAttackPoint.transform.position, PunchAttackRange, Enemy1Layer);
foreach(Collider2D enemy in hitEnemyP)
{
enemy.GetComponent<Enemy1RE>().TakeDamageEnemy1(1, transform.position);
}
f_currentTime = f_handcooltime;
b_AttackP = false;
}
}
}
ํ์ฌ ์ ์์๋ ํ๊ณ ์๋ ์ฝ๋์
์ ์ ์ค๋ฒ๋ฉ์ํด์ ์ด์ฉํด์ ๋ฐ๋ฏธ์ง ์ฃผ๋ ๋ฐฉ์์ธ๋ฐ
์ง๊ธ ๊ตฌํํ ์ ์ด ํ ์ข ๋ฅ ๋ฟ์ด๋ผ
๋ค๋ฅธ ์ข ๋ฅ์ ์ ์๊ฒ๋ ๋๊ฐ์ด ๋ฐ๋ฏธ์ง๋ฅผ ์ฃผ๊ณ ์ถ์
๊ทธ๋ฐ๋ฐ ์ด๋ป๊ฒ ํด์ผํ ์ง ์ ๋ชจ๋ฅด๊ฒ ์ด๊ฐ์ง๊ณ ..๋ง๋งํด์ ๋ฌผ์ด๋ด
์๋ํด๋ณธ ๋ฐฉ์์
foreach(Collider2D enemy in hitEnemyP)
{
enemy.GetComponent<Enemy1RE>().TakeDamageEnemy1(1, transform.position);
enemy.GetComponent<Enemy2RE>().TakeDamageEnemy2(1, transform.position);
}
์ ๋ฐ์์ผ๋ก ๋ค๋ฅธ ์ฝ๋ ํ๋ ๋ ์ง ๋ค์์ ๋ถ๋ฌ์ค๋๊ฑด๋ฐ
์ด์ํ๊ฒ ํ ์ข ๋ฅ์ ์ ์๊ฒ๋ ์ ์์ ์ผ๋ก ๋์ํ๋ ๋ค๋ฅธ ์ ์๊ฒ๋ ๋์์ด ์๋จ..
ํน์ ์ด๊ฑด ์ด๋ป๊ฒ ํด๊ฒฐํด์ผํ ๊น..
Overlap/CircleAll => ์ด๊ฑฐ ์ด๋ ๊ฒ ์ด๊ฑด ์ค์ ์ฝ๋์์๋ ์ฌ๋์ ๋นผ๊ณ ์ผ๋๋ฐ ์ฌ๊ธฐ๋ ์ฐจ๋จ๋จ์ด๋ก ๋์ด์์ด์ ์์๋ก์ ๋ ๊ฒํ๊ฑฐ
++
์นผ๋ผ ์คํฌ๋ฆฝํธ
---
์์ 2
http://colorscripter.com/s/W66nBE8
๋งํฌ ์ฒจ๋ถํ๊ณ ์ด๋ ๊ฒ ๋ฐ๊ฟ๋ ์ ์๋๋ค..
Collider2D[] hitEnemyP = Physics2D.Overlap/CircleAll(PunchAttackPoint.transform.position, PunchAttackRange, Enemy1Layer); ์ด ๋ถ๋ถ ํธ์ถ์์ Enemy1Layer ๋ฅผ ๋ฃ๊ณ ์๋๋ฐ Enemy2 Layer๊ฐ ๋ค๋ฅด๊ฒ ๋ผ์๋์ง ํ์ธํด๋ณด์ . ๊ทธ๋ฆฌ๊ณ ์ด๋ฐ ๊ฒฝ์ฐ Enemy1RE, Enemy2RE ๋ก ํด๋์ค ๋๋ ์ ๋ฐ๋ก๋ฐ๋ก ํจ์ ํธ์ถํ ๊ฒ ์๋๋ผ, ์์์ Enemy ํด๋์ค ๋ง๋ค์ด๋๊ณ ์์๋ฐ์์ ์ฌ์ฉํ๋ ์ธํฐํ์ด์ค๋ฅผ ์ฐ๋ ..
enemy1layer์ public layermask๋ก ๋ถ๋ ์..๊ธ ์ฌ๋ฆฌ๊ณ ์ฐฌ์ฐฌํ ๋ค์ ์๊ฐํด๋ดค๋๋ฐ ๊ทธ๋ ๋๋ผ๊ณ ..๊ทธ๋์ layermask๋ฅผ ๋ฐฐ์ด๋ก ์ ์ธํด์ ์ฐ๊ณ ์ถ์๋ฐ ์ ๋ชจ๋ฅด๊ฒ ๋ค.. enemy ์์์์ ์์๋ฐ์์ด๋ค๋๊ฑฐ๋ ์ข ์ดํด๊ฐ ์๊ฐ์ ๊ทธ๋ฌ๋๋ฐ ์ด๋ค ์๋ฆฌ์ผ? ์ ์ ๊ตฌํํด๋ณด๋๊ฒ ์ด๋ฒ์ด ์ฒ์์ด๋ผ..
๋ค ์ข์๋ฐ ์ฌ๋ฆด๋ ์นผ๋ผ์คํฌ๋ฆฝํฐ์ข ์จ๋ผ..
์ด๋ฐ๊ฒ ์๊ตฌ๋..ใ ใ ใ ใ ์์ ํด์์ฌ๋ ค๋ณผ๊ฒ
https://colorscripter.com/
attack(LayerMask) ํ๊ณ ๋ถ๋ฅด๋์ชฝ์์ ๋ ์ด์ด๋ง์คํฌ ์ธํ ํ๋๊ฑด ์ด๋ ๋ ์ด์ด๋ง์คํฌ ์ค๋ณตํ๋๊ฑด or์ฐ์ฐ์ผ๋กํด์ฃผ๋ฉด ์ค๋ณต์ผ๋ก ๊ฒ์ถ ๊ฐ๋ฅํจ
attack(layermask) ์ด ๋ถ๋ถ์ด ํน์ enemy.GetComponent().TakeDamageEnemy1(1, transform.position); ์ด ๋ถ๋ถ ๋งํ๋๊ฑฐ์ผ? ์กฐ๊ธ ์ดํด๊ฐ ์๊ฐ์ ๊ทธ๋ฐ๋ฐ
void AttackCommand(LayerMask mask){...} LayerMask mask = LayerMask.GetMask("mask1") | LayerMask.GetMask("mask2"); AttackCommend(mask);
Layer์จ๋ ๋๊ฐ์ |์ฐ์ฐ์ผ๋ก ํฉ์ณ์ฃผ๋ฉด ์ค๋ณต์ผ๋ก ๊ฒ์ถ๊ฐ๋ฅ
๊ทธ๋ฌ๋ฉด ํน์ overlap/circleall() ์์ ๊ฐ์ฅ ๋ง์ง๋ง ๋ณ์๊ฐ ๋ ์ด์ด์ผ ํ์์? ๊ทธ ๋ถ๋ถ์ ์ด๋ป๊ฒ ์ฒ๋ฆฌํด์ผํด?
๋ด๊ฐ ์ง๊ธ๊น์ง ์ค๋ช ํ๊ฒ ๋๊ฐ ๊ถ๊ธํดํ๋๊ฑฐ์
์ด ๋ฐฉ์์ผ๋ก ํด๋ ์ฌ์ ํ ์๋ฌ๊ฐ ๋ ์ ๊ทธ๋ฐ๋ฐ ๋ด๊ฐ ๋ญ ์๋ชปํ๊ฒ ์๋ ํ์ธ์ข ๋ถํ..
int enemy1 = 1 << LayerMask.NameToLayer("Enemy1"); int enemy2 = 1 << LayerMask.NameToLayer("Enemy2"); int mask = enemy1 | enemy2; ์ด๋ ๊ฒ ๋ฐ๊ฟ๋ด ๊ทธ๋ฆฌ๊ณ ๋๊ฐ ๊ฒน์น ์์ดํผ๋ก ๊ด๊ณ ํ๋ค ์ฐจ๋จ๋นํด์ ๋ต๋ณ ์ด๋ ค์ฐ๋๊น ์๋๋ฉด ๊ตฌ๊ธ๋งํด๋ด
์ด์ํ๋ฌธ์ << ์