Preview
- Rigidbody 2D
- Colliders 2D
-- Collider와 Rigidbody 상호작용
- OnCollisionEnter2D
- Destory
- this
- Tag
-- CompareTag
- 오브젝트 랜덤으로 생성
-- 위치를 랜덤으로 생성
-- 타입을 랜덤으로 생성
- Color
Rigidbody 2D
- 게임 오브젝트의 중력, 질량, 드래그, 운동량에 대한 반응과 같은 물리 기반 동작 제어
- 2D이므로 XY 평면을 따라만 이동할 수 있으며 해당 평면에 수직인 축에서만 회전할 수 있음
참고 : https://docs.unity3d.com/kr/2022.3/Manual/rigidbody2D.html
https://docs.unity3d.com/kr/2022.3/Manual/class-Rigidbody2D.html
Colliders 2D
- 물리적 충돌을 위한 게임 오브젝트의 모양을 정의
- Edit Collider로 모양(초록색선으로 표시됨) Sprite에 맞게 조정 가능
- 주로 사용되는 Colliders
| 항목 | 설명 |
| Circle Collider 2D | 원형 충돌 영역에 사용 |
| Box Collider 2D | 정사각형 및 직사각형 충돌 영역에 사용 |
| Capsule Collider 2D | 타원형 또는 마름모 모양의 충돌 영역에 사용 |
참고: https://docs.unity3d.com/kr/2022.3/Manual/Collider2D.html
Collider와 Rigidbody 상호 작용
- 충돌 검사 시 Collider와 Rigidbody를 함께 활용하면 정확한 충돌 판정 보장
- collision matrix (0열이 자신, 0행이 상대)

참고 : https://vionixstudio.com/2019/09/04/unity-collider-explained/
OnCollisionEnter2D
- 충돌이 감지될 때 호출되는 이벤트 함수
- 충돌에 관한 정보를 매개 변수로 받을 수 있음
- 이와 같은 물리 이벤트 함수들은 이름이 On으로 시작
참고 : https://docs.unity3d.com/ScriptReference/MonoBehaviour.OnCollisionEnter2D.html
https://docs.unity3d.com/kr/560/Manual/EventFunctions.html
private void OnCollisionEnter2D(Collision2D collision)
{
// 충돌 시 실행될 로직 작성
}
Destroy
- 인자로 들어온 것을 없애는 함수
- 인자로 오브젝트, 컴포넌트, 에셋을 넘길 수 있음
참고 : https://docs.unity3d.com/ScriptReference/MonoBehaviour.OnCollisionEnter2D.html
https://docs.unity3d.com/kr/530/Manual/CreateDestroyObjects.html
Destroy(this.gameObject); // 스크립트 가지고 있는 오브젝트(자기 자신) 파괴
this
- 클래스가 사용되는 현재 인스턴스를 가리킴
- 다른 오브젝트와 스크립트가 붙어있는 오브젝트(자기 자신) 오브젝트를 구분
- 클래스 내의 멤버에 접근할 수 있음
Tag
- 스크립팅 목적으로 게임 오브젝트를 식별하는데 사용
- 플레이어가 적, 사물, 수집품과 상호 작용하는지 판단해야 하는 콜라이더 조작 스크립트의 트리거에 활용
참고 : https://docs.unity3d.com/kr/2022.3/Manual/Tags.html
CompareTag
public bool CompareTag(string tag);
- 오브젝트가 인자로 들어온 태그와 일치하면 true, 일치하지 않으면 false를 반환
- 오브젝트의 태그를 문자열로 비교하는 것보다 CompareTag 사용을 권장
if (other.CompareTag("Player")) // 다른 오브젝트의 태그가 플레이어면
{
Destroy(other.gameObject); // 그 오브젝트 파괴
}
참고 : https://docs.unity3d.com/ScriptReference/Component.CompareTag.html
https://sorting.tistory.com/12
오브젝트 랜덤으로 생성
위치를 랜덤하게 생성
void Start()
{
float x = Random.Range(x축 범위 시작점(float), x축 범위 종료점(float));
float y = Random.Range(y축 범위 시작점(float), y축 범위 종료점(float));
transform.position = new Vector3(x, y, 0);
}
타입을 랜덤하게 생성
void Start()
{
int type = Random.Range(1, 4); // 1~3 타입 랜덤으로 생성
// 타입에 따라 크기와 점수 다르게 설정
switch (type)
{
case 1:
size = 0.8f;
score = 1;
break;
case 2:
size = 1.0f;
score = 2;
break;
case 3:
size = 1.2f;
score = 3;
break;
default:
break;
}
transform.localScale = new Vector3(size, size, 0);
}
Color
public Color(float r, float g, float b, float a);
- 인자로 r, g, b, a 값을 받아 새로운 색을 생성하는 메서드
- float 값이므로 원하는 값(정수)에 255f를 나누어 연산
SpriteRenderer renderer;
void Start()
{
renderer = GetComponent<SpriteRenderer>();
renderer.color = new Color(100 / 255f, 100 / 255f, 1f, 1f);
// (R: 100, G: 100, B: 255, A: 255)
}
참고 : https://docs.unity3d.com/ScriptReference/Color-ctor.html
'내일배움캠프 > TIL' 카테고리의 다른 글
| [내배캠][Unity6기][TIL] 2. 풍선을 지켜라(1~11) (0) | 2024.09.05 |
|---|---|
| [내배캠][Unity6기][TIL] 1. 빗물받는 르탄이(7~9) (0) | 2024.09.04 |
| [내배캠][Unity6기][TIL] 1. 빗물받는 르탄이(1~4) (0) | 2024.09.02 |
| [내배캠][Unity_6기][TIL] C# 기초 문법 리뷰, 클래스와 객체, 추가 학습 (0) | 2024.08.31 |
| [내배캠][Unity_6기][TIL] C# 연산자, 제어문, 배열, 함수 (0) | 2024.08.30 |