본문 바로가기
개발일지/게임개발

[유니티 게임 개발] 동방을 걷다 프로젝트 9 - 몬스터 스포너 추가 2024 05 24(AM 01:30)

by 라이티아 2024. 5. 28.

현재 듣고있는곡

夜踊る雫 / miku    STEAKA

리듬감이 미친 곡이다 작업할때 들으면 신난다

 

몬스터 스포너는 2016년에 누군가 던져둔 코드를 사용했다

 

[Unity] 게임 매니저를 이용한 몬스터 리스폰 구현

빈 게임 오브젝트를 생성한 후 Spawn Point로 지정하고 자식 Point를 몬스터가 나타날 위치에 배치 스크...

blog.naver.com

스크립트를 봤을때 너무나 적당해서 적당히 수정해서 가져왔다

 

이제 몬스터는 일정 시간마다 자동으로 생성된다

 

다만 문제가 여러가지 있다

 

몬스터내의 스크립트가 여러가지를 가져와야 사용할 수있는데, 이를 자동으로 가져오지 못하는 상황이다

 

이를 해결하기 위해서 .find()함수를 사용한다

 

GameObject cameraswitchObject = GameObject.Find("Cameraswitch");
        if (cameraswitchObject != null)
        {
            cameraswitch = cameraswitchObject.GetComponent<CameraSwitch>();
        }

        GameObject playerObject = GameObject.Find("Player");
        if (playerObject != null)
        {
            player = playerObject.GetComponent<GPSManager>();
        }

어차피 카메라 스위치와 플레이어는 이름이 변하지 않으니, 이름으로 게임 오브젝트를 가져온뒤, 게임 오브젝트에서 컴포넌트를 뜯어오는 방식으로 자동으로 필요한 컴포넌트 값들을 가져온다

 

그럼 이렇게 자동으로 채워지는 모습을 볼 수 있다

 

다만 이렇게 하는것에는 문제가 있다

 

이러한 방식으로는 false된 오브젝트는 가져올 수 없다

 

private void OnTriggerEnter2D(Collider2D other)
    {
        if (other.CompareTag("Player")) // 충돌한 객체가 Player 태그
        {
            if (monsterCollider != null)
            {
                monsterCollider.enabled = false;
                player.ismove = false;
                //move_scence.SetActive(true);
                Instantiate(move_scence,gameObject.transform.position, gameObject.transform.rotation);
                Destroy(gameObject);
            }
        }
    }

그래서 충돌시 setactive를 조절하는 것이 아닌, instantiate하는 방식으로 변경했다