Welcome to GEMENTAR TOUR PUO V2 Development Documentation. Enjoy your stay!

Table of Contents

UIController

UI Controller Script

using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using TMPro;
 
public class ZombieUIManager : MonoBehaviour
{
    public TextMeshProUGUI bulletCount;
    public TextMeshProUGUI staminaCount;
    public TextMeshProUGUI healthCount;
    public TextMeshProUGUI coinCount;
    private ZombieGunController _zombieGunController;
    private ZombiePlayerController _zombiePlayerController;
    private ZombieHealth _zombieHealth;
 
 
    private void Awake()
    {
        _zombieGunController = FindObjectOfType<ZombieGunController>();
        _zombieGunController.sendEventToUI.AddListener(UpdateBulletCount);
 
        _zombiePlayerController = FindObjectOfType<ZombiePlayerController>();
        _zombiePlayerController.sendEventToUI.AddListener(UpdateStaminaCount);
        _zombiePlayerController.onPlayerDied.AddListener(UpadatePlayerDied);
        initialStamina = _zombiePlayerController.runStamina;
 
        _zombieHealth = _zombiePlayerController.gameObject.GetComponent<ZombieHealth>();
        _zombieHealth.sendEventHealthCount.AddListener(UpdateHealth);
    }
 
    private void UpdateBulletCount(int x)
    {
        bulletCount.text = x.ToString(); 
    }
 
    private void UpdateHealth(float x)
    {
        healthCount.text = Mathf.Ceil(Mathf.Clamp(x, 0, 100)).ToString();
    }
 
    private float initialStamina;
    private void UpdateStaminaCount(float x)
    {
        int staminaPercentage = Mathf.RoundToInt(Mathf.Clamp(x/initialStamina * 100, 0, 100));
        staminaCount.text = staminaPercentage.ToString() + "%";
    }
 
    private void UpadatePlayerDied()
    {
 
    }
 
    public void UpdateCoinCount(int x)
    {
        coinCount.text = x.ToString();
    }
 
 
}

Health

Health Script

using Sirenix.OdinInspector;
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.Events;
 
public class ZombieHealth : MonoBehaviour
{
    [HideInEditorMode]
    public UnityEvent sendEventOnMinusHealth;
 
    [HideInEditorMode]
    public UnityEvent<float> sendEventHealthCount;
 
 
    [SerializeField]
    public float _health { get; private set; } = 100f;
 
    private void Start()
    {
        sendEventHealthCount.Invoke(_health);
    }
 
    public bool IsDead()
    {
        if(_health <= 0f)
        {
            return true;
        }
 
        return false;
    }
 
    public void MinusHealth(float x)
    {
        _health -= x;
        sendEventOnMinusHealth.Invoke();
        sendEventHealthCount.Invoke(_health);
    }
 
    [Button]
    public void FullHealth()
    {
        _health = 100f;
    }
 
    [Button]
    public void EmptyHealth()
    {
        _health = -1f;
    }
 
 
}

Coin

CoinPickup Script

using Micosmo.SensorToolkit;
using MoreMountains.Feedbacks;
using System;
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.Events;
 
public class ZombieCoinController : MonoBehaviour
{
    public static int totalPoint = 0;
 
    public GameObject coinObject;
 
    public RangeSensor rangeSensor;
 
    private AudioSource audSource;
    public AudioClip audClip;
 
    private void Awake()
    {
        audSource = this.GetComponent<AudioSource>();
        rangeSensor.OnDetected.AddListener(AddPoint);
    }
 
    public void AddPoint(GameObject arg0, Sensor arg1)
    {
        Action<int> firstAction = FindObjectOfType<ZombieUIManager>().UpdateCoinCount;
 
        audSource.PlayOneShot(audClip);
 
 
        totalPoint += 1;
        rangeSensor.enabled = false;
        firstAction(totalPoint);
        coinObject.SetActive(false);
    }
}

Ammo

AmmoPickup Script

using Micosmo.SensorToolkit;
using System;
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
 
public class ZombieAmmoPickup : MonoBehaviour
{
    public int respawnTime = 60;
    public int bulletCount = 15;
 
    private RangeSensor _rangeSensor;
    private ZombieGunController _gunController;
    private MeshRenderer _meshRenderer;
    private AudioSource _audioSource;
 
    private void Start()
    {
 
        _rangeSensor = this.GetComponent<RangeSensor>();
        _rangeSensor.OnDetected.AddListener(ReceivedEventOnDetected);
 
        _gunController = FindObjectOfType<ZombieGunController>();
 
        _meshRenderer = this.GetComponent<MeshRenderer>();
 
        _audioSource = this.GetComponent<AudioSource>();
 
    }
 
    private bool _canBePickedUp = true;
    private void ReceivedEventOnDetected(GameObject arg0, Sensor arg1)
    {
        if (!_canBePickedUp) return;
 
        _gunController.addBullet(bulletCount);
 
        _meshRenderer.enabled = false;
 
        _canBePickedUp = false;
 
        _audioSource.Play();
 
        StartCoroutine(enableIt());
    }
 
    private IEnumerator enableIt()
    {
        yield return new WaitForSeconds(respawnTime);
        _meshRenderer.enabled = true;
        _canBePickedUp = true;
    }
 
 
}


QR Code
QR Code wiki:etc_prototyping (generated for current page)
Hello World!
DokuWiki with monobook... rules!