유니티
6/28 특정오브젝트 찾기, 인스턴스화
SUGI_
2023. 6. 28. 17:46
의문) 게임오브젝트를 다른 객체에 안에 상속 후 충돌하면 찌그러지고 그렇지 않다면 왜 아무변화가 없을까?
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