//Tower.cs
public enum Element {NONE,NORMAL,FIRE,POISION,FROST,STANDARD }//์—ด๊ฑฐํ˜• ํด๋ž˜์Šค,NONE์€ 0
public abstract class Tower : MonoBehaviour//์ถ”์ƒํด๋ž˜์Šค๋Š” ์ธํ„ฐํŽ˜์ด์Šค์˜ ์—ญํ• ๋„ ํ•˜๋ฉด์„œ ํด๋ž˜์Šค์˜ ๊ธฐ๋Šฅ๋„ํ•จ
{
public Element ElementType { get; protected set; }//ํ”„๋กœํ…ํ‹ฐ๋“œ set์€ ํ•˜์œ„ ํด๋ž˜์Šค์—์„œ๋งŒ ์‚ฌ์šฉ๊ฐ€๋Šฅ
}
//TomatoTower.cs
public class TomatoTower : Tower
{
private void start()
{
ElementType = Element.NORMAL;
}
}
//Projectiles.cs
public class Projectiles : MonoBehaviour
{
private Monster target;
private Tower parent;
private Transform FirePoint;
private Animator myAnimator;
private Element elementType;
public void Initialize(Tower parent)
{
this.elementType = parent.ElementType;
this.target = parent.Target;
this.parent = parent;
}
private void OnTriggerEnter2D(Collider2D other)//๋“ค์–ด์˜ค๋Š”๊ฒƒ์ด other other์— ํƒœ๊ทธ๋กœ ๋ญ๊ฐ€ ๋“ค์–ด์˜ค๋Š”์ง€ ํŒ๋‹จ
{
if(other.tag == "Monster")
{
if(target.gameObject==other.gameObject)
{
Debug.Log(elementType);
target.TakeDamage(parent.Damage,elementType);
myAnimator.SetTrigger("Impact");
//GameManager.Instance.Pool.ReleaseObject(gameObject);//the game object this component is attached to. A component is always attached to a game object.//ํˆฌ์‚ฌ์ฒด ์ง€์›€
//ImpactBehaviour์—์„œ ์˜ค๋ธŒ์ ํŠธํ’€ ๋„ฃ๋Š”๊ฒƒ ์‹คํ–‰
}
//Monster hitInfo = other.GetComponent<Monster>();
}
}

๋ณด๋‹ค์‹œํ”ผ TomatoTower.cs ๋ณด๋ฉด ์•Œ๋‹ค์‹œํ”ผ Tower์— ์žˆ๋Š” ์—ด๊ฑฐํ˜• ํด๋ž˜์Šค์—์„œ NORMAL์„ ์„ ํƒํ–ˆ๊ฑฐ๋“ ?

๊ทธ๋ฆฌ๊ณ  ๋ฐœ์‚ฌ์ฒด์ธ Projectiles.cs์—์„œ๋„ ๋ฐœ์‚ฌ์ฒด์—์„œ ๋ฐœ์‚ฌ์ฒด ์†์„ฑ์„ ์ € ๋ฐœ์‚ฌ์ฒด๊ฐ€ ๋‚˜๊ฐ€๋Š” ํƒ€์›Œ์˜ ์†์„ฑ์„ ๋”ฐ๋ผ๊ฐ€๊ฒŒ ํ–ˆ๋‹จ ๋ง์ด์•ผ?


๊ทธ๋Ÿผ ๋‹น์—ฐํžˆ ํžˆํŠธ๋ฅผ ํ•˜๋ฉด NOMAL ํƒ€์ž…์ด ํžˆํŠธํ–ˆ๋‹ค๊ณ  ๋‚˜์™€์•ผํ•˜๋Š”๋ฐ


๊ณ„์† ์ƒ์†์„ ๋ชป๋ฐ›์•„์„œ NONE์ด ๋‚˜์˜ด.


๋Œ€์ฒด ์–ด๋””์„œ ์‹ค์ˆ˜ํ•œ๊ฑธ๊นŒ?


์ „์ฒด๊ฐ€ ์•„๋‹Œ ์˜ค๋ฅ˜๊ฐ€ ์žˆ๋Š” ๋ถ€๋ถ„๋งŒ ์งค๋ผ์˜ด