유니티

[유니티] 게임오브젝트 이동 시 배경 무한 복사

HorseDragon 2023. 4. 19. 10:51

코드몽키를 참고해서 게임 오브젝트 이동 시 배경 무한 복사를 만들었음.

점프는 없을 것이므로, Y축 방향으로는 고려를 안하고 X축 방향으로만 스크립트 작성.

 

using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class ParallaxBackground : MonoBehaviour
{
    [SerializeField] private Vector2 parallaxEffectMultiplier; //배경 화면이 카메라를 따라오는 정도. 배경화면을 고정해두려면 0으로 입력
    private Transform cameraTransform;
    private Vector3 lastCameraPosition;
    private float textureUnitSizeX;
    void Start()    
    {
        cameraTransform = Camera.main.transform; //카메라는 게임 주인공 캐릭터를 따라가게 설정 해둬야 함.
        lastCameraPosition = cameraTransform.position;
        Sprite sprite = GetComponent<SpriteRenderer>().sprite;
        Texture2D texture = sprite.texture;
        textureUnitSizeX = texture.width / sprite.pixelsPerUnit; //배경화면의 X사이즈   
    }

    void LateUpdate()
    {
        Vector3 deltaMovement = cameraTransform.position - lastCameraPosition;
        transform.position += new Vector3(deltaMovement.x * parallaxEffectMultiplier.x, deltaMovement.y * parallaxEffectMultiplier.y);
        lastCameraPosition = cameraTransform.position;
        
        if(Mathf.Abs(cameraTransform.position.x - transform.position.x) >= textureUnitSizeX) //카메라와 배경화면의 위치 차이가 배경화면의 X사이즈보다 커지면 offset을 준다.
        {
            float offsetPositionX = (cameraTransform.position.x - transform.position.x) % textureUnitSizeX;
            transform.position = new Vector3(cameraTransform.position.x + offsetPositionX, transform.position.y);
        }
    }
}

 

 

https://youtu.be/wBol2xzxCOU