본문 바로가기
유니티 공부/Unity

Unity - 아이템 획득 효과(아이템이 위로 올라가면서 서서히 사라지게 하기) 넣는 법

by 코딩하는 돼징 2023. 9. 19.
반응형

1. 초기 설정

01 변수 설정

[Header("Item")]
public GameObject item; // 화면에 표시될 item image
public float itemEffectDuration = 1f; // item image가 사라지는 데 걸리는 시간
public float itemEffectDistance = 5f; // item image가 위로 이동하는는 거리
private float itemEffectTimer = 0.0f; // item image 효과의 경과 시간
private bool isCollectingItem = false; // item을 획득 중인지 여부

02 초기 UI비활성화

private void Start()
{
    item.SetActive(false);
}

2. 위치 및 투명도 설정

void duck()
{
    if (isCollectingItem)
    {
        itemEffectTimer += Time.deltaTime;

        if (itemEffectTimer <= itemEffectDuration)
        {
            // 위치 이동
            float yOffset = itemEffectDistance * (itemEffectTimer / itemEffectDuration);
            item.GetComponent<RectTransform>().anchoredPosition = new Vector2(0f, yOffset);
			// 투명도 조정
            float alpha = 1.0f - (itemEffectTimer / itemEffectDuration);
            item.GetComponent<Image>().color = new Color(1f, 1f, 1f, alpha);
        }
        else
        {
            // 효과가 끝난 후 UI 요소를 비활성화하고 초기화합니다.
            item.SetActive(false);
            itemEffectTimer = 0.0f;
            isCollectingItem = false;
        }
    }
}

01 경과 시간을 전체 지속시간으로 나눈 비율

0에서 시작하여 시간이 지남에 따라 1에가까워진다.

itemEffectTimer / itemEffectDuration

02 앞서 계산한 비율을 이동거리에 곱한다.

이는 시간에 따라 변화하므로 아이템을 부드럽게 이동시킬 수 있다.

itemEffectDistance * (itemEffectTimer / itemEffectDuration);

03 alpha값 설정

1에서 0으로 점차 감소하게 설정함에 따라 사라지는 것처럼 시각적으로 표현된다.

1.0f - (itemEffectTimer / itemEffectDuration);

04 위의 alpha값을 이용해 투명도 item에 적용

item.GetComponent<Image>().color = new Color(1f, 1f, 1f, alpha);

3. Trigger로 아이템 획득 설정

private void OnTriggerEnter(Collider other)
{
    if (other.CompareTag("item"))
    {
        Destroy(other.gameObject);
        item.SetActive(true);
        isCollectingItem = true;
    }
}

4. 영상 확인

 

 

 

반응형

댓글