인프런 커뮤니티 질문&답변

장석현님의 프로필 이미지

작성한 질문수

[유니티 3D] 실전! 생존게임 만들기 - Advanced

고기 해체(돼지 해체)

도와주세요

작성

·

226

1

다 똑같이 따라했는데 돼지 죽여도 텍스트가 안떠요 ㅠㅠ

private void MeatInfoAppear()

    {

        if(hitInfo.transform.GetComponent<Animal>().isDead)

        {

            dissolveActivated = true;

            actionText.gameObject.SetActive(true);

            actionText.text = hitInfo.transform.GetComponent<Animal>().animalName + " 해체하기" + "<color=yellow>" + "(E)" + "</color>";

        }

    }

즉 이부분이 아예 실행이 안되는것 같습니다 ㅠㅠ

답변 3

1

Action Controller의 Layer Mask에 돼지가 포함되어 있지 않아서 if문에 걸리지 않아 생기는 오류 같습니다. 돼지의 Layer를 item으로 하거나 Animal Layer를 추가해서 Layer를 Animal로 설정하게되면 if문에 걸려서 위의 문제를 해결할 수 있습니다.

그러나 Weapon에서는 충돌감지가 layer가 변함에 따라 적용되지 않으므로 CloseWeapon layer(ex axe, pickaxe 등의 하위의 Layer mask)에도 animal을 추가해주면 위의 문제를 해결할 수 있을 것 같습니다.

0

  • Main Camera의 Culling Mask에도 Animal 체크 해주셔야 다 뜹니다

0

케이디님의 프로필 이미지
케이디
지식공유자

우선 돼지가 RayCast에 의해 충돌했는지 여부를 알기 위해 hitInfo.transform.name 을 Debug로 띄웁니다.

 

제대로 돼지와 Ray가 충돌했다면 다음으로 if 조건문을 만족하는지 확인합니다.

 

isDead가 제대로 true가 되었다면 조건문 안의 내용을 실행하게 될겁니다.

 

감사합니다.