반응형
5.8 UI 표시하기
5.8.1 UI를 표시하고 갱신하는 감독 만들기
- UI 부품을 Scene 뷰에 배치한다
- UI를 갱신하는 감독 스크립트를 작성한다.
- 빈 오브젝트를 만들고 작성한 스크립트를 적용한다.
5.8.2 HP 게이지 배치하기
※ 앵커 포인트 설정
- 화면의 크기가 바뀌어도 화면 오른쪽 위에 HP게이지가 표시되도록 앵커 포인트를 변경
- 앵커 포인트 : 화면 크기가 바뀔 때 어디를 원점으로 해서 UI 부품 좌표를 다시 계산하는가?
- 앵커 포인트를 적절히 설정하면 실행하는 기기의 화면 크기에 의존하지 않는 UI를 만들 수 있음
※ HP 게이지 줄여 나가기
- HP 게이지를 줄이려면 UI 오브젝트의 Image에서 제공하는 Fill 기능을 사용한다.
- Fill Amount 변수 값을 바꾸면 이미지 표시 영역을 줄이거나 늘릴 수 있다.
- 게이지를 표시하는 방법에는 원형으로 이미지를 잘라 내는 방법 말고도 상하 방향, 좌우 방향, 선형으로 게이지를 만드는 방법 등 여러가지가 있다.
5.9 UI를 갱신하는 감독 만들기
5.9.1 UI를 갱신하는 흐름 생각하기
- 화살 컨트롤러는 감독에게 HP가 감소되었다고 알린다.
- 감독은 HP 게이지의 UI를 갱신한다.
5.9.2 UI를 갱신하는 감독 만들기
※ 감독 스크립트 작성하기 -> 빈 오브젝트 만들기 -> 빈 오브젝트에 감독 스크립트 적용하기
gameDirector
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.UI;
public class GameDirector : MonoBehaviour
{
GameObject hpGauge;
void Start()
{
this.hpGauge = GameObject.Find("HPGauge");
// Find() 를 사용해서 Scene에서 HPGauge 오브젝트를 찾는다.
}
public void DecreaseHp()
{
this.hpGauge.GetComponent<Image>().fillAmount -= 0.1f;
// image의 옵션값 fillAmount의 값을 변경시킨다.
}
}
5.9.3 HP가 줄었다고 감독에게 알리기
ArrowController
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class ArrowController : MonoBehaviour
{
GameObject player;
void Start()
{
this.player = GameObject.Find("player");
}
void Update()
{
// 프레임 마다 등속으로 낙하시킨다.
transform.Translate(0, -0.1f, 0);
// 화면 밖으로 나오면 오브젝트를 소멸시킨다.
if (transform.position.y < -5.0f)
{
Destroy(gameObject);
}
// 충돌 판정
Vector2 dir = transform.position - this.player.transform.position;
float d = dir.magnitude;
float arrowRange = 0.5f;
float playerRange = 1.0f;
if (d < arrowRange + playerRange)
{
// 추가**
// 감독 스크립트에 플레이어와 화살이 충돌했다고 전달한다.
GameObject director = GameObject.Find("GameDirector");
director.GetComponent<GameDirector>().DecreaseHp();
// GameDirector에 public으로 선언한 DecreaseHP() 메서드를 호출한다.
// **추가
// 충돌한 경우는 화살을 지운다.
Destroy(gameObject);
}
}
}
※ PC에서는 화살표 키로 작동하지만, 모바일에서는 버튼의 기능을 넣거나, 화면을 반으로 쪼개서 좌우 터치를 확인 할 수 있게끔 작업을 해야 할 필요성이 보인다.
반응형
'개발 > 유니티(UNITY)' 카테고리의 다른 글
5-6 유니티로 화살 피하기 게임 만들기(심화2) (0) | 2023.10.30 |
---|---|
5-5 유니티로 화살 피하기 게임 만들기(심화1) (0) | 2023.10.29 |
5-3 유니티로 화살 피하기 게임 만들기 (0) | 2023.10.27 |
5-2 유니티로 화살 피하기 게임 만들기 (0) | 2023.10.26 |
5-1 유니티로 화살 피하기 게임 만들기 (0) | 2023.10.25 |