본문 바로가기
유니티

6/28 특정오브젝트 찾기, 인스턴스화

by SUGI_ 2023. 6. 28.

의문) 게임오브젝트를 다른 객체에 안에 상속 후 충돌하면 찌그러지고 그렇지 않다면 왜 아무변화가 없을까?

 

GameObject.Find(" ").GetComponent<>().함수();

 = 게임 오브젝트를 찾고. 게임오브젝트안의 스크립트에 접근. 함수 호출;

public class ScoreMananger : MonoBehaviour
{
    Text score;
    int count;

    void Start()
    {
        //게임상의 Score UI Text 게임오브젝트 찾아서 컴포넌트 Text가지고오기
        score = GameObject.Find("Score").GetComponent<Text>();
        count = 0;
    }
 private void OnCollisionEnter(Collision collision)
    {
        //적 충돌할때
        if(collision.gameObject.CompareTag("Enemy"))
        {
            GameObject manager = GameObject.Find("ScoreManager"); //게임오브젝트찾는다.
            manager.GetComponent<ScoreMananger>().InScore(); //게임오브젝트안의 스크립트 접근. 함수 호출

            // 몇 초뒤 사라지게 함
            Destroy(gameObject, 0.2f);
        }
    }

 

GameObjet prefab 변수명 선언

GameObjet 변수명 = Instantiate(prefab, 생성될 곳 위치, 방향)

 void Update()
    {
        if (Input.GetMouseButtonDown(0))
        {
            //프리팹을 이용하여 오브젝트 생성
            //Instantiate(프리팹, 생성될곳위치, 방향)
            //자기스크립트 오브젝트의 위치
            GameObject bullet = Instantiate(bulltPrefab, transform.position, transform.rotation);
            //생성된 총알 컴포넌트 스크립트 안의 Shoot함수 이용해서 움직여주기
            bullet.GetComponent<BulletController>().Shoot(new Vector3(0,0,100));
        }
    }

* 발생했던 오류 *

같은 말이지만 프리팹으로 가져와서 사용하였을 때 생성 시기에 따라 오류가 발생할 수 있음

(우) 맞는 코드

Rigidbody() 충돌 시 Constraints의 값 수정 -> 지정한 값을 해제하는 상수 RigidbodyConstraints.None

  Rigidbody rb = GameObject.Find("Player").GetComponent<Rigidbody>();
            rb.constraints = RigidbodyConstraints.None;

 

728x90

'유니티' 카테고리의 다른 글

6/30 C# 클래스 상속  (0) 2023.06.30
6/29 [Invoke, OnBeacmeInvisible(), SoundManger(싱글톤)]  (0) 2023.06.29
6/21 배열 , 형변환  (0) 2023.06.28
6/28 C#  (0) 2023.06.28
유니티 화면녹화  (0) 2023.06.27