using System.Collections;
using System.Collections.Generic;
using Unity.Collections.LowLevel.Unsafe;
using UnityEditor.SceneManagement;
using UnityEngine;
public class Level : MonoBehaviour
{
public int numBgCount = 2; // 배경화면 오브젝트만큼 생성
public int obstacleCount = 0;
public Vector3 ObstacleLastPosition = Vector3.zero;
public float bgSpeed = 1f;
public float bgTime =0f;
BoxCollider2D collider;
private void Awake()
{
collider = GetComponent<BoxCollider2D>();
}
public void Update()
{
if ((bgTime >= 5)) // bgTime이 5이상이면
{
bgSpeed += 0.5f; // bground speed 0.5 상승
bgTime = 0;
}
transform.position += Vector3.left * bgSpeed * Time.deltaTime;
bgTime += 1f *Time.deltaTime;
}
private void OnTriggerEnter2D(Collider2D collision)
{
if (collision.CompareTag("Looper"))
{
float widthOfBgObject = collider.size.x; // 배경화면 가로 길이
Vector3 pos = collider.transform.position; // 현재 위치
pos.x += widthOfBgObject * numBgCount; // 가로길이 만큼 이동
collider.transform.position = pos; // pos 이동한 위치를 collision 위치로 삽입( 반영)
return;
}
}
}
맨 왼쪽에 루퍼를 놓고 루퍼에 닿으면 맵의 끝으로 이동하여 무한히 연결되는 맵을 만들었다.
먼저 (맵)타일에 스크립트를 달아놓고 먼저 Collider를 초기화 시킨다.
Trigger충돌이 나면 collision 정보로 Tag가 Looper인지 확인 후
Looper가 맞다면 collider.size.x로 widthOfBgObject (타일 너비 변수)를 초기화시킨다.
Vector3 pos = collider.transform.position으로 현재 위치로 초기화 시키고
pos.x+=widthOfBgObject*bgcount; // bgcount만큼 뒤로 보냄 나는 백그라운드맵이 2개여서 2로 설정함
pos를 다시 collider에 담아준다.
여기서 맵은 카메라보다 크거나 같아야한다
루퍼에 닿으면 맵이 뒤로 가는 모습이다
'Game Engine > Unity' 카테고리의 다른 글
[Unity] Tutorial code (0) | 2025.02.26 |
---|---|
코루틴 사용법 (0) | 2025.02.25 |
[Unity] 트러블슈팅 (0) | 2025.02.20 |
[Unity] 플레이어를 따라오는 카메라 구현 (0) | 2025.02.19 |
[Unity] 이동구현 (0) | 2025.02.18 |