#17 Robot! Escape! - Enemy UI

w298·2022년 11월 15일
0

DEVLOG - Robot! Escape!

목록 보기
17/21
  • Player UI (HUD)
  • Enemy UI (인디케이터)
  • Turret, Laptop Hack UI

UI

EnemyRobot Prefab 에 다음과 같이 Canvas 를 붙여 주었다.

노란색 아이콘은 detectLevel 을 표시하고, 아래 빨간색은 Health Bar 이다.
detectLevel 이 80 이상이거나, 플레어어를 발견하면 사각형이 꽉 차게 되고, 빨간색으로 변한다.

StatusIndicator.cs

using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.UI;

public class StatusIndicator : MonoBehaviour
{
    private RobotStatusController robotStatus;
    private EnemyRobotAI ai;
    private Camera mainCam;

    private RectTransform healthBarRect;

    private GameObject detectBorder;
    private Image detectFrontImage;
    private RectTransform detectFrontRect;

    private void Start()
    {
        robotStatus = transform.root.GetComponent<RobotStatusController>();
        ai = transform.root.GetComponent<EnemyRobotAI>();
        mainCam = Camera.main;

        healthBarRect = transform.GetChild(0).GetChild(1).GetComponent<RectTransform>();

        detectBorder = transform.GetChild(1).gameObject;
        detectFrontImage = detectBorder.transform.GetChild(1).GetComponent<Image>();
        detectFrontRect = detectBorder.transform.GetChild(1).GetComponent<RectTransform>();
    }

    private void LateUpdate()
    {
        healthBarRect.sizeDelta = new Vector2(robotStatus.health, healthBarRect.sizeDelta.y);

        if (ai.detectLevel.currentLevel <= 0 && !ai.enemyObject)
        {
            detectBorder.SetActive(false);
        }
        else
        {
            detectBorder.SetActive(true);
            detectFrontRect.sizeDelta = new Vector2(detectFrontRect.sizeDelta.x, ai.enemyObject ? 30 : Mathf.Clamp(ai.detectLevel.currentLevel * 0.3f * 1.25f, 0, 30));

            detectFrontImage.color = ai.detectLevel.currentLevel >= 80 || ai.enemyObject ? new Color(0.735849f, 0.2249199f, 0.2662449f) : new Color(1, 0.7328318f, 0);
        }

        transform.rotation = mainCam.transform.rotation;

        transform.parent.position = transform.root.position + new Vector3(-0.5f, 2, 0.5f);
    }
}
profile
Game Developer & Web Developer

0개의 댓글