코드몽키를 참고해서 게임 오브젝트 이동 시 배경 무한 복사를 만들었음.
점프는 없을 것이므로, 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);
}
}
}
'유니티' 카테고리의 다른 글
[유니티] MMF Player로 화면 쉐이크 넣기 (0) | 2023.05.12 |
---|---|
For Loop에서 AddListener 사용! (0) | 2023.04.26 |
[유니티] 구글인앱리뷰 설정하기 (0) | 2023.04.15 |
Particle System으로 만들어진 GameObject의 Rotation이 안되는 문제 (0) | 2023.03.28 |
UI Panel, Prefab으로 지정하여 모든 Scene에서 로딩 (0) | 2023.03.27 |