728x90

 

몬스터 오브젝트 세 개를 두고 누르면 아이엠 그라운드 자기소개 하기

공통부분은 부모에게서 받은 그대로, 각 몬스터 특성 따라 오버라이딩하여 재정의

부모 추상 클래스 생성

abstact class Monster
{
    public abstract string MakeSound();
    public void Attack()
    {
    	Debug.Log("공격");
    }
    public void Dead()
    {
    	Debug.Log("으어억");
    }
}

상속받는 자식 클래스들

class Ork : Monster
{
	public override string MakeSound()
    {
    	return "I'm Ork";
    }
}

class Elf : Monster
{
	public override string MakeSound()
    {
    	return "I'm Elf";
    }
}

class Devil : Monster
{
	public override string MakeSound()
    {
    	return "I'm Devil";
    }
}

아니 이거 복붙도 아니고 그대로 쓰는데 왜 밀려있냐

아무튼 추상클래스를 상속받은 자식 클래스들은 반드시 override로 추상메서드를 재정의 해야한다

오브젝트 클릭시 자기소개하기

void Update()
{
    if(Input.GetMouseButtonDown(0))
    {
    	Ray ray = Camera.main.ScreenPointToRay(Input.mousePosition);
        RaycastHit hit;
        if(Physics.Raycast(ray, out hit))
        {
            Debug.Log(hit.collider.name);
            switch(hit.collider.name)
            {
                case "Ork":
                    makeSoundText.text = ork.MakeSound();
                    break;
                case "Elf":
                    makeSoundText.text = elf.MakeSound();
                    break;
                case "Devil":
                    makeSoundText.text = devil.MakeSound();
                    break;
                default: 
                    return;
            }

        }
    }
}

Input.GetMouseButtonDown(0) -> 마우스 버튼 왼쪽 클릭하면

클릭한 마우스 포지션으로 ray를 쏘고

RaycastHit -> 그 ray에 닿은 오브젝트가 있다면 hit.collider.name을 로그로 출력

닿은 오브젝트의 이름이 Ork 또는 Elf 또는 Devil 이면 각각 텍스트에 자기소개 출력

결과

 

Dead와 Attack도 확인해보자

 

부모에게 받은 으어억과 공격이 잘 나오고있다

 

728x90
Posted by 바르마스
,