728x90
몬스터 자식에 캔버스를 따로 생성한뒤
텍스트 생성
Targetting img 스크립트에
public static TargettingImg instance;
public GameObject targetimg;
public GameObject inventory;
public Image hpbar; // fillamount 값 조정할거라 이미지 받아와주고
public GameObject HpBar; // hp바 프레임 배경 다가져오기위해 Gameobject로 받아주고
public Text Damage;//데미지 받기위한 텍스트
public GameObject canvas;//데미지 캔버스
public void Damaging(float damage)// 다른스크립트 코루틴은 스타트가 안되기때문에 스타트 해줄 함수 선언
{
StartCoroutine(OndamageText(damage)); //스타트 코루틴
}
public IEnumerator OndamageText(float damage)
{
canvas.SetActive(true);//canvas 보이게
Damage.text = damage.ToString(); // 텍스트는 전달받은 데미지로
Damage.fontSize = 60;//데미지 폰트 60 으로설정
for(int i=Damage.fontSize;i>=30;i--) // 폰트가 30이 될때까지 for 문 작동
{
Damage.fontSize = i; // 데미지 폰트사이즈는 i
yield return new WaitForFixedUpdate();//다음 fixedupdate 까지 기다림;
}
yield return new WaitForSeconds(1f);// 1.5초 뒤에
canvas.SetActive(false);//canavs 안보이게
}
void Update()
{
if(inventory.activeSelf == false)
{
Damage.transform.position = Camera.main.WorldToScreenPoint(transform.position + new Vector3(0, 1, 0));
targetimg.transform.position = Camera.main.WorldToScreenPoint(transform.position);
hpbar.fillAmount = Mathf.Lerp(hpbar.fillAmount, (float)Monster.instance.stat.curHp / (float)Monster.instance.stat.maxHp, Time.deltaTime * 10);// 체력바가 부드럽게 줄기위해서 Lerp 를 사용하였다.
HpBar.transform.position = Camera.main.WorldToScreenPoint(transform.position + new Vector3(0, 2, 0));//몬스터 y축으로 2 더높게 뜨게 설정하였다.
}
}
추가후
TargettingImg.instance.Damaging(playerDamage);//Damaigng 함수 호출 (코루틴시작함수)
몬스터 OntriggerEnter 에서 호출해준다.
그러면 이런식으로 Text가 생성된다.
오늘은 학원에 등원해서 취업상담을 진행해서 여기까지만 진행하고
다음에는 퀵슬롯 구현 예정이다.
반응형
'개인프로젝트 3D RPG 개발일지' 카테고리의 다른 글
25.(유니티포폴)퀵슬롯구현 (0) | 2022.07.19 |
---|---|
24.(유니티포폴)퀵슬롯 (0) | 2022.07.18 |
22.(유니티포폴) 몬스터HP 바 및 캐릭터 HP,MP바 구현 (0) | 2022.07.14 |
21.(유니티포폴) 아이템 드랍 (0) | 2022.07.13 |
20.(유니티포폴) 인벤토리 팝업창 생성 및 아이템 추가 제거 (0) | 2022.07.12 |