반응형
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. 영상 확인
반응형
'유니티 공부 > Unity' 카테고리의 다른 글
Unity - 카메라로 씬에 있는 게임 오브젝트 조작하기 (0) | 2023.09.20 |
---|---|
Unity - 마우스로 카메라 조작하기 (0) | 2023.09.20 |
Unity - Mouse입력 Action으로 처리해보기 (0) | 2023.09.15 |
Unity - Mathf.Clamp (0) | 2023.09.15 |
Unity - 플레이어 따라가던 카메라가 벽에 막히면 벽 뚫기 (0) | 2023.09.15 |
댓글