충돌을 위한 필수 조건
- 두 오브젝트 모두 Collider2D 컴포넌트를 가지고 있어야 함
Collider2D는 오브젝트의 충돌 범위를 정의. 충돌이 일어나려면 모든 오브젝트가 이 컴포넌트를 가지고 있어야 함- 두 오브젝트 중 하나 이상은 Rigidbody2D 컴포넌트를 가져야 함
Rigidbody2D는 Unity에서 물리 법칙을 적용하기 위한 컴포넌트. 오브젝트의 이동이나 충돌이 물리적으로 처리되려면 최소한 한 오브젝트가 이 컴포넌트를 포함해야 함
📍 기존 코드
using UnityEngine;
public class Movement2D : MonoBehaviour
{
private float moveSpeed = 5.0f; // 이동 속도
private void Update()
{
float x = Input.GetAxisRaw("Horizontal"); //좌우 이동
float y = Input.GetAxisRaw("Vertical"); //위아래 이동
// 새로운 위치 = 현재 위치 + (방향 * 속도)
transform.position += new Vector3(x, y, 0) * moveSpeed * Time.deltaTime;
}
}
컴포넌트 접근과 관리 방법
권장 방법
- 컴포넌트와 동일한 타입의 변수를 먼저 선언함
- GetComponent<>()를 통해 해당 컴포넌트 정보를 가져와 변수를 초기화함
- 이렇게 저장된 변수를 통해 해당 컴포넌트의 정보에 접근하거나 변경할 수 있음
→ 이 방식은 컴포넌트 정보를 한 번만 가져와 클래스 내 어디서든 사용할 수 있고, 성능에도 유리함
Rigidbody2D 활용
📍 변경 코드 (Rigidbody2D 적용)
using UnityEngine;
public class Movement2D : MonoBehaviour
{
private float moveSpeed = 5.0f; // 이동 속도
private Rigidbody2D rigid2D;
private void Awake()
{
rigid2D = GetComponent<Rigidbody2D>();
}
private void Update()
{
float x = Input.GetAxisRaw("Horizontal"); //좌우 이동
float y = Input.GetAxisRaw("Vertical"); //위아래 이동
// 새로운 위치 = 현재 위치 + (방향 * 속도)
//transform.position += new Vector3(x, y, 0) * moveSpeed * Time.deltaTime;
// Rigidbody2D 컴포넌트에 있는 속력(velocity) 변수 설정
rigid2D.velocity = new Vector3(x, y, 0) * moveSpeed;
}
}
📍 동영상 예시
[출처] 고박사 - 따라하면서 배우는 고박사의 유니티 기초
(섹션 2 유니티 2D 기초)
Corner Unity
ⓒ Hetbahn
[유니티 소소모임] 3주차. 유니티 에디터 배우기 2 (Editor : Hetbahn) (0) | 2024.11.08 |
---|---|
[유니티 소소모임] 3주차. 유니티 에디터 배우기 2 (Editor: Luna) (0) | 2024.11.08 |
[유니티 소소모임] 2주차. 유니티 에디터 배우기 1 (Editor: Borybop) (1) | 2024.10.11 |
[유니티 소소모임] 2주차. 유니티 에디터 배우기 1 (Editor: Luna) (0) | 2024.10.11 |
[유니티 소소모임] 2주차. 유니티 에디터 배우기 1 (Editor: 동동) (1) | 2024.10.11 |