Parallax effect

Kyu hyunSung·2025년 7월 8일

의미:
관찰자의 위치 변화에 따라 가까운 물체와 먼 물체가 서로 다른 속도로 움직여 보이는 현상을 뜻합니다. 게임에서는 배경에 깊이감과 입체감을 주는 기법으로 사용됩니다.

자세한 과정은 이 영상 참고.
Unity Parallax Tutorial - How to infinite scrolling background

결과

Code


using UnityEngine;

/// <summary>
/// 시차 효과(Parallax Effect)를 구현하는 스크립트
/// 카메라 움직임에 따라 배경이 다른 속도로 움직여 깊이감을 표현
/// </summary>
public class Parallax : MonoBehaviour
{
   [Header("시차 효과 설정")]
   public Camera ca;                    // 기준이 되는 카메라
   public float parallaxEffect;         // 시차 효과 강도 (0: 고정, 1: 카메라와 동일한 속도)
   
   [Header("배경 정보 (자동 계산)")]
   private float length;                // 스프라이트의 가로 길이
   private float startPos;              // 스프라이트의 초기 X 위치

   void Start()
   {
       // 초기화: 시작 위치와 스프라이트 크기 저장
       startPos = transform.position.x;
       length = GetComponent<SpriteRenderer>().bounds.size.x;
   }

   void FixedUpdate()
   {
       // 카메라 위치에 따른 배경 이동 거리 계산
       float dist = ca.transform.position.x * parallaxEffect;
       
       // 무한 스크롤을 위한 상대적 카메라 위치 계산
       float temp = ca.transform.position.x * (1 - parallaxEffect);

       // 배경 위치 업데이트 (Y, Z는 고정)
       transform.position = new Vector3(startPos + dist, transform.position.y, transform.position.z);

       // 무한 배경 구현: 배경이 화면 밖으로 나가면 반대편으로 이동
       if (temp > startPos + length)
       {
           startPos += length;  // 오른쪽 끝에 도달하면 왼쪽으로 이동
       }
       else if (temp < startPos - length)
       {
           startPos -= length;  // 왼쪽 끝에 도달하면 오른쪽으로 이동
       }
   }
}
profile
디지털 치매 예방

0개의 댓글