07/28 2D Platformer 게임의 구성 및 스크립팅
댓글 0
댓글을 작성하려면 로그인이 필요합니다.
아직 댓글이 없습니다. 첫 번째 댓글을 작성해보세요!
댓글을 작성하려면 로그인이 필요합니다.
아직 댓글이 없습니다. 첫 번째 댓글을 작성해보세요!
속도로 움직이기: velocity
velocity는 Rigidbody2D가 현재 X축과 Y축 방향으로 얼마나 빠르게 움직이고 있는지를 나타내는 Vector2 값이다. 2D 플랫포머에서는 X축 속도를 플레이어 입력으로 제어하고, Y축 속도는 중력과 점프에 맡기는 방식으로 각 축을 독립적으로 관리한다.
| 항목 | 설명 | 예시 |
|---|---|---|
velocity.x | 좌우 이동 속도 | x * moveSpeed |
velocity.y | 상승·낙하 속도 | 중력 또는 jumpPower |
| 좌우 이동 | Y축 속도를 유지하고 X축만 변경 | new Vector2(x * moveSpeed, rb.velocity.y) |
| 점프 | X축 속도를 유지하고 Y축만 변경 | new Vector2(rb.velocity.x, jumpPower) |
| 주의점 | 속도 전체를 덮어쓰면 중력이나 점프 속도가 사라질 수 있음 | 변경하지 않을 축의 기존 값을 보존 |
플랫포머에서는 MovePosition보다 속도(velocity)를 직접 다루는 방식이 더 자연스럽다. 중력이 만드는 낙하 속도와 조작이 만드는 이동 속도를 축별로 나눠 관리할 수 있기 때문.
// 좌우 이동
rb.velocity = new Vector2(x * moveSpeed, rb.velocity.y);
// 점
if (Input.GetKeyDown(KeyCode.Space))
rb.velocity = new Vector2(rb.velocity.x, jumpPower);
바닥 판정: Ground Check와 LayerMask
바닥 판정의 아이디어는 단순합니다. 플레이어 발밑에 작은 원을 두고, 그 원이 바닥과 겹치는지 검사합니다.
bool isGrounded = Physics2D.OverlapCircle(groundCheck.position, 0.15f, groundLayer);
Physics2D.OverlapCircle은 지정한 위치를 중심으로 보이지 않는 원형 범위 안에 특정 Collider2D가 있는지 검사하는 함수입니다.
| 재료 | 만드는 법 |
|---|---|
groundCheck | 플레이어의 자식으로 빈 오브젝트를 만들어 발밑에 배치 |
0.15f | 검사 원의 반지름. Scene에서 감이 안 오면 값을 키워 실험 |
groundLayer | LayerMask. 바닥으로 인정할 레이어만 지정 |
LayerMask 준비:
Ground로 지정합니다 (없으면 Add Layer로 만듭니다).groundLayer 드롭다운에서 Ground만 체크합니다.카메라 추적: 따라오는 시선
예시 코드
public class CameraFollow : MonoBehaviour
{
[SerializeField] private Transform target;
[SerializeField] private float smoothSpeed = 5f;
void LateUpdate()
{
Vector3 wanted = new Vector3(target.position.x, target.position.y, -10f);
transform.position = Vector3.Lerp(transform.position, wanted, smoothSpeed * Time.deltaTime);
}
}
LateUpdate는 모든 Update가 끝난 뒤 호출됩니다. 플레이어가 움직인 다음에 카메라가 따라가야 떨림이 없습니다.Lerp는 현재 위치에서 목표 위치로 조금씩 다가가는 함수입니다. smoothSpeed가 클수록 바짝 붙습니다.코요테 타임
코요테 타임은 캐릭터가 발판에서 떨어진 직후에도 잠깐 점프할 수 있게 해주는 기능입니다.
플레이어의 입력이 아주 조금 늦어도 점프가 성공하도록 보정해 줍니다.
보통 0.1초 안팎으로 설정하며, 조작감을 더 부드럽고 관대하게 만듭니다.
XR을 활용한 게임 개발 3기(유니티) 수강생입니다. 곧 수료 하지만 앞으로 이곳에 가끔 저의 개발 경험이 나 지식 기록할까 합니다. 더 나아가 이 사이트가 제 개인위키의 역할을 할 수 있으면 좋겠습니다. 한국 게임 시장을 흔들겠습니다

게임 광고 수익은 단순히 광고를 붙이는 것이 아니라, 여러 광고 네트워크를 경쟁시켜 가장 높은 수익을 만드는 구조입니다.

안녕하세요. 플밍 4기 입니다. 게임 개발을 배우기 전 네트워크 엔지니어 도메인에서 익히고 배웠던 네트워크 이론에 대한 기초 입니다. 학습에 도움이 되길 바라며 공유 드립니다.
XR을 활용한 게임 개발 3기(유니티) 수강생입니다. 곧 수료 하지만 앞으로 이곳에 가끔 저의 개발 경험이 나 지식 기록할까 합니다. 더 나아가 이 사이트가 제 개인위키의 역할을 할 수 있으면 좋겠습니다. 한국 게임 시장을 흔들겠습니다



게임 광고 수익은 단순히 광고를 붙이는 것이 아니라, 여러 광고 네트워크를 경쟁시켜 가장 높은 수익을 만드는 구조입니다.


안녕하세요. 플밍 4기 입니다. 게임 개발을 배우기 전 네트워크 엔지니어 도메인에서 익히고 배웠던 네트워크 이론에 대한 기초 입니다. 학습에 도움이 되길 바라며 공유 드립니다.