내일배움캠프 18일차 TIL C# 미니프로젝트 플레이어이동
2025. 7. 23. 21:31ㆍ내일배움캠프Unity_13기(스파르타코딩클럽)
728x90
using UnityEngine;
[RequireComponent(typeof(Rigidbody2D))]
public class PlayerMovement : MonoBehaviour
{
[Header("플레이어 이동")]
public float moveSpeed = 3f;
private Rigidbody2D rb;
private Vector2 moveInput;
void Start()
{
rb = GetComponent<Rigidbody2D>();
}
void Update()
{
moveInput.x = Input.GetAxisRaw("Horizontal");
moveInput.y = Input.GetAxisRaw("Vertical");
moveInput = moveInput.normalized;
}
void FixedUpdate()
{
rb.MovePosition(rb.position + moveInput * moveSpeed * Time.fixedDeltaTime);
}
}
[RequireComponent(typeof(Rigidbody2D))]
- 이 스크립트가 붙은 게임 오브젝트에 Rigidbody2D가 없으면 Unity가 자동으로 추가함.
- 안전장치 역할!
public float moveSpeed = 3f;
- 이동 속도를 조절할 수 있는 변수. 유니티 인스펙터에서 조절 가능.
private Rigidbody2D rb;
private Vector2 moveInput;
- rb: Rigidbody2D 참조용
- moveInput: 이동 방향 입력 저장 (예: 왼쪽이면 (-1, 0))
void Start()
{
rb = GetComponent<Rigidbody2D>();
}
시작 시 Rigidbody2D 컴포넌트를 찾아서 rb에 저장.
void Update()
{
moveInput.x = Input.GetAxisRaw("Horizontal");
moveInput.y = Input.GetAxisRaw("Vertical");
moveInput = moveInput.normalized;
}
- 키보드 입력을 실시간으로 받음
- A/D → x축 (-1, 1)
- W/S → y축 (1, -1)
- normalized: 대각선 이동 시 속도 과속 방지 (속도를 1로 보정)
void FixedUpdate()
{
rb.MovePosition(rb.position + moveInput * moveSpeed * Time.fixedDeltaTime);
}
- FixedUpdate: 물리 연산 전용 업데이트 함수 (Rigidbody 이동은 여기서 해야 함)
- MovePosition: Rigidbody를 이동시킬 때 사용하는 방식 (직접 transform.position 수정보다 안전)
구성요소 설명
RequireComponent(typeof(Rigidbody2D)) | 이 스크립트가 붙은 오브젝트에 Rigidbody2D가 없으면 자동으로 추가해줌 |
moveSpeed | 플레이어의 이동 속도 |
rb | Rigidbody2D 컴포넌트를 저장할 변수 |
moveInput | 키보드 입력을 저장하는 벡터 (x: 좌우, y: 상하) |
Start() | 게임 시작 시 Rigidbody2D 컴포넌트를 가져옴 |
Update() | 매 프레임마다 입력을 받아 moveInput에 저장 (정규화 포함) |
FixedUpdate() | 물리 연산을 통해 Rigidbody2D를 이용해 이동 처리 |
항목 설명
입력 처리 | Input.GetAxisRaw로 방향 입력을 가져옴 |
속도 보정 | .normalized로 대각선 이동 속도 일관성 유지 |
물리 이동 | Rigidbody2D.MovePosition()으로 부드럽고 충돌 가능한 이동 구현 |
Time.fixedDeltaTime | FixedUpdate()에서 프레임 보정용 시간값 (프레임 수와 상관없이 일정하게 이동하기 위함) |
'내일배움캠프Unity_13기(스파르타코딩클럽)' 카테고리의 다른 글
내일배움캠프 17일차 TIL C# 스크립트 게임 코드 타이핑 이펙트 (1) | 2025.07.22 |
---|---|
내일배움캠프 15일차 TIL C# 텍스트게임 팀 프로젝트 (2) | 2025.07.18 |
내일배움캠프 14일차 TIL C# 텍스트게임 팀 프로젝트 MyProject (3) | 2025.07.17 |
내일배움캠프 13일차 TIL C# 텍스트게임 팀 프로젝트 (1) | 2025.07.16 |
내일배움캠프 12일차 TIL C# 텍스트게임 팀 프로젝트 (저장/불러오기) (1) | 2025.07.15 |