2023. 8. 24. 15:31ㆍUnity
배경화면 에셋을 하나 복사하여 두개를 나란히 V키 스냅을 이용해 위와 같이 배치한다. Pixels Per Unit 값을 조정해 화면보다 조금 크게 조절한다.
배경화면 스크롤
횡스크롤 게임이기 때문에 배경화면을 왼쪽으로 계속 움직여야 한다. 스크립트를 하나 만들어 조절한다. 왼쪽의 배경이 일정 값 이상 넘어가면 오른쪽으로 다시 옮겨서 무한 반복되게 만들어야 한다.
public class BGScript : MonoBehaviour
{
public float bgspeed = 2;
SpriteRenderer bgspr;
void Start()
{
bgspr = GetComponent<SpriteRenderer>();
}
void Update()
{
transform.position += Vector3.left * Time.deltaTime * bgspeed;
Vector3 pos = transform.position;
if(pos.x + bgspr.bounds.size.x / 2 < -8 )
{
float size = bgspr.bounds.size.x * 2;
pos.x += size;
transform.position = pos;
}
}
}
계속해서 왼쪽으로 흘러가게 만들고, 만약 배경 스프라이트 센터의 x 값인 pos.x에 배경 스프라이트 가로의 반을 더한 값이 게임 화면의 끝인 -8보다 작아지면(게임 화면에서 바로 벗어나면), 오른쪽으로 가로 길이의 2배만큼 이동한다. 이어서 바로 오는 배경의 오른쪽에 바로 위치해야 하기 때문이다.
배경 별 스크롤
배경이 흘러가듯이 배경에 쓸 별도 흘러가게 만들어야한다. 배경과 같은 방식을 쓰면 간단하지만 랜덤성을 부여해보고자 한다.
제한된 값 사이의 높낮이 y를 랜덤으로 할 예정이고, 흘러가는 스피드 또한 랜덤으로 만들어 볼 예정이다. 같은 스프라이트 3개를 이용한다.
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class BGStarScript : MonoBehaviour
{
float bgstar_speed;
float bgstar_y;
SpriteRenderer bgstar;
void Start()
{
bgstar = GetComponent<SpriteRenderer>();
bgstar_speed = Random.Range(1.0f, 5.0f);
bgstar_y = Random.Range(-4.7f, 4.7f);
}
void Update()
{
transform.position += Vector3.left * Time.deltaTime * bgstar_speed;
Vector3 pos = transform.position;
if(pos.x + bgstar.bounds.size.x / 2 < -8)
{
pos.x += bgstar.bounds.size.x * 2;
pos.y = bgstar_y;
transform.position = pos;
bgstar_speed = Random.Range(1.0f, 5.0f);
bgstar_y = Random.Range(-4.7f, 4.7f);
}
}
}
배경 별이 새로 생성되는 높낮이와 흘러가는 속도를 랜덤하게 float 형태로 설정해줄 것이다. void Start()에 초기 랜덤 값을 넣고 배경 별 스프라이트가 되돌아갈 때 다시 랜덤 실수를 부여하여 새로운 속도와 높이로 흘러가게 한다. 랜덤 값을 어디에 두느냐에 따라 별이 아예 멈춰있는 오류가 나올 수 있어서 몇 번 시도해보았다.
배경인 행성도 마찬가지로 스크립트를 적용하였다. 스피드는 랜덤으로.
'Unity' 카테고리의 다른 글
[Unity] Tag와 Layer (0) | 2023.08.24 |
---|---|
[Unity Project] <ShootOut2D> 2D 슈팅 게임 만들기(3) 플레이어 제한 (0) | 2023.08.24 |
[C#] Static 변수 / Static 함수 / Static 변수의 자기참조 (0) | 2023.08.24 |
[Unity Project] <ShootOut2D> 2D 슈팅 게임 만들기(1) 플레이어 설정 (0) | 2023.08.23 |
[Unity] 오브젝트 통과와 충돌, 제거(Collider / Rigid Body / Destroy) (0) | 2023.08.17 |