Unity_개발일지_03

홍신영·2024년 9월 11일
0

Unity

목록 보기
5/64
  • Prefab화 시킨 오브젝트에서 Scene에 있는 오브젝트 참조가 안되는 문제 해결
    WaypointManager로 Scene에 있는 Transform값 연결
    Monster프리팹에 MonsterMovement2D 스크립트 연결
    Scene에 배치 된 WaypointManager를 싱글톤으로 구현하고, MonsterMovement2D에서 Transform값을 참조하여 가져온다.

기존 타입이 안맞는다고 나오는 현상, Hierarchy에서 프리팹으로 위치정보 안넣어지는 문제 해결완료.

WayPointManager

public static WaypointManager instance;
public Transform[] waypoints; // 씬에 있는 모든 웨이포인트를 등록

void Awake()
{
    // 싱글톤 패턴을 사용해 다른 오브젝트들이 이 매니저에 접근할 수 있도록 설정
    if (instance == null)
    {
        instance = this;
    }
    else
    {
        Destroy(gameObject);
    }
}

MonsterMovement2D

public class MonsterMovement2D : MonoBehaviour
{
public float speed = 2f;
private Transform[] waypoints;
private int currentWaypointIndex = 0;

void Start()
{
    // WaypointManager에서 웨이포인트 배열을 가져옴
    waypoints = WaypointManager.instance.waypoints;
}

문제해결>
두 오브젝트 충돌 시 체력 감소 기능 구현 중 한 번 닿았는데 한 번에 체력이 다 떨어지는 오류상황
문제의 코드

            int healthRatio = currentHealth / maxHealth;
            front.transform.localScale = new Vector2(healthRatio, 1);

해결코드
정수를 나누었을 때 소숫값이 나오게 되어 반올림 처리등으로 체력이 확 줄어든 것. 이 때 아에 자료형을 바꾸진 않고 이 코드에서만 (float)으로 처리.

           // 체력비율을 float로 계산해서 체력바 조정
            float healthRatio = (float)currentHealth / maxHealth;
            front.transform.localScale = new Vector2(healthRatio, 1);
   
profile
게임 클라이언트 개발자

0개의 댓글

Powered by GraphCDN, the GraphQL CDN