배경
Obstacle이 제대로 생성되지 않았다.
해결 방법
SetRandomPlace 함수의 위치
- SetRandomPlace가 정상적으로 위치를 반환을 하지않았던 것이 문제였다.
using UnityEngine;
using System.Collections;
using System.Collections.Generic;
public class BgLooper : MonoBehaviour
{
public int numBgCount = 2;
public int obstacleCount = 0;
public Vector3 obstacleLastPosition = Vector3.zero;
void Start()
{
Obstacle[] obstacles = GameObject.FindObjectsOfType<Obstacle>();
obstacleLastPosition = obstacles[0].transform.position;
obstacleCount = obstacles.Length;
for (int i = 0; i < obstacleCount; i++)
{
obstacleLastPosition = obstacles[i].SetRandomPlace(obstacleLastPosition, obstacleCount);
}
}
public void OnTriggerEnter2D(Collider2D collision)
{
Debug.Log("Triggered: " + collision.name);
if (collision.CompareTag("BackGround"))
{
BoxCollider2D bgCollider = collision.GetComponent<BoxCollider2D>();
if (bgCollider != null)
{
float widthOfBgObject = bgCollider.size.x; // 백그라운드의 width를 가져옵니다.
Vector3 pos = collision.transform.position;
pos.x += widthOfBgObject * numBgCount; // 백그라운드 객체를 이동시킵니다.
collision.transform.position = pos;
Debug.Log("Updated Background position: " + pos); // 디버깅 로그 추가
}
return;
}
Obstacle obstacle = collision.GetComponent<Obstacle>();
if (obstacle)
{
// 장애물이 충돌했을 때 새로운 위치로 설정
obstacleLastPosition = obstacle.SetRandomPlace(obstacleLastPosition, obstacleCount);
Debug.Log("Obstacle position updated: " + obstacle.transform.position); // 디버깅 로그 추가
}
}
}
오브젝트의 충돌 및 위치 갱신 처리가 올바르게 이루어지는지 확인하는 것이 중요할 것 같다.
'Game Engine > Unity' 카테고리의 다른 글
코루틴 사용법 (0) | 2025.02.25 |
---|---|
[Unity] 2D 무한 맵 생성 (0) | 2025.02.24 |
[Unity] 플레이어를 따라오는 카메라 구현 (0) | 2025.02.19 |
[Unity] 이동구현 (0) | 2025.02.18 |
[Unity] Stack (0) | 2025.02.17 |