2024. 8. 23. 15:11ㆍ카테고리 없음
개요
Unity 기본 개념 정리
내용 - Pivot(중앙잡기)
pivot을 0.5로 설정하면 중앙이고, 0으로 설정하면 왼쪽끝으로 설정한다는 뜻이다.
그리고 Scale값을 조절하면 된다.
내용 - Canvas - RenderMode
Canvas의 RenderMode를 Overlay 를 World Space로 변경해 주기
Overlay : RenderMode가 Overlay로 설정된 Canvas는 휴대폰, 노트북, 또는 모니터 등의 기기 스크린에 직접적으로 그려집니다. 이 모드에서는 UI 요소들이 화면 크기에 맞게 자동으로 조정되며, 다른 게임 오브젝트와 상호작용하지 않습니다. 주로 메인 메뉴, 버튼, 텍스트 등 일반적인 UI 요소에 사용됩니다.
World Space : UI가 3D 오브젝트와 상호작용하거나, 게임 세계 내 특정 위치에 고정되어 있어야 할 때 적합합니다. 예를 들어, 게임 내 디스플레이 패널이나 3D 오브젝트 위에 떠 있는 상태바 같은 인터랙티브한 UI를 구현할 때 사용합니다.
내용 - Hierarchy에 있는Prefabs 저장
Hierarchy창에 있는 Prefabs를 수정해서 저장할때에는 Overrides를 눌러 Apply All을 눌러주면 Prefabs에 저장이 된다.
내용 - Rigidbody 2D 를 사용할떄 중력의 영향을 없애는 방법
Food에 Rigidbody 2D, Circle Collider 2D 달아주기
참고) 충돌 = 한쪽에 rigidbody + 양쪽에 collider
단! Body Type을 Kinematic으로 잡아주기 = 중력의 영향을 안 받겠다는 뜻
→ 그리고 isTrigger에 체크! 중력의 영향을 안 받을 때에는 이것을 체크해 주세요(부딪칠 물체에도 Is Trigger를 켜야한다.)
이렇게 되면 C#script에서 OnCollisionEnter2D메서드를 사용할 수 없게 된다.
이유
Rigidbody가 Kinematic속성으로 바뀌게 되어서 사용할 수 없게 됐다.
그러면 어떻게 해야돼나? 그래서 체크한 것이 Is Trigger이다
C#Script에서 사용할 함수는 OnTriggerEnter2D메서드이다.
private void OnTriggerEnter2D(Collider2D collision)
{
if (collision.gameObject.CompareTag("Food"))
{
if(energy < full)
{
energy += 1.0f;
front.localScale = new Vector3(energy / full, 1.0f, 1.0f);
Destroy(collision.gameObject);
if(energy == 5.0f)
{
if(!isFull)
{
isFull = true;
hungryCat.SetActive(false);
fullCat.SetActive(true);
GameManager.Instance.AddScore();
}
}
}
}
}
OnCollisionEnter2D메서드처럼 작성하면 된다.
내용 - Unpack
Prefab을 Hierarchy창에 가져와 Unpack을 하면 기존에 있던 Prefab에는 영향을 안끼친다.