C / raylib
Beginner
C99 / raylib 5.0+
raylib Camera2D 줌, 회전, 룸 바운드(Room Clamp) 및 부드러운 타깃 추적
플레이어를 자연스럽게 화면 중앙에 유지하고 레벨 경계선 밖으로 카메라가 벗어나지 않도록 클램핑하며 마우스 휠 줌을 지원하는 raylib 2D 카메라 시스템.
#C #raylib #Camera2D #GameFeel #2DPlatformer
핵심 개념raylib의
Camera2D 구조체는 offset(화면 중심 앵커), target(월드 상 추적 대상), rotation, zoom 네 가지 파라미터로 동작합니다. 지수 감쇠 보간(lerp)과 룸 경계선 클램핑을 적용해 부드러운 카메라워크를 완성합니다.1. 부드러운 타깃 팔로우 및 바운드 클램프 C 코드
#include "raylib.h"
#include "raymath.h"
void UpdateSmoothCamera(Camera2D* camera, Vector2 playerPos, Rectangle mapBounds, float dt) {
// 1. 부드러운 지수 보간 (Smooth follow)
float smoothSpeed = 8.0f;
camera->target.x = Lerp(camera->target.x, playerPos.x, smoothSpeed * dt);
camera->target.y = Lerp(camera->target.y, playerPos.y, smoothSpeed * dt);
// 2. 맵 경계선 클램핑 (뷰포트 절반 크기 고려)
Vector2 halfView = { (GetScreenWidth() / 2.0f) / camera->zoom,
(GetScreenHeight() / 2.0f) / camera->zoom };
camera->target.x = Clamp(camera->target.x, mapBounds.x + halfView.x,
mapBounds.x + mapBounds.width - halfView.x);
camera->target.y = Clamp(camera->target.y, mapBounds.y + halfView.y,
mapBounds.y + mapBounds.height - halfView.y);
}