| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106 |
- using System.Collections;
- using System.Collections.Generic;
- using UnityEngine;
- public class Station : MonoBehaviour
- {
- public float maxPower;
- public Transform gauge;
- public float powerSuckDelay = 1;
- public float powerLevel;
- public LineRenderer lineRenderer;
- private IEnumerator drainCoroutine;
- private Transform lineTarget;
- // Use this for initialization
- void Start()
- {
- powerLevel = 0;
- lineTarget = lineRenderer.transform;
- lineRenderer.SetPositions(new Vector3[]{
- lineRenderer.transform.position,
- lineTarget.position,
- });
- }
- // Update is called once per frame
- void Update()
- {
- UpdatePowerBar();
- }
- void PowerUp(float delta)
- {
- powerLevel += delta;
- if (powerLevel >= maxPower)
- Debug.Log("Station at max power!");
- UpdatePowerBar();
- }
- private void UpdatePowerBar()
- {
- var level = powerLevel / maxPower;
- gauge.localScale = new Vector3(1, level, 1);
- lineRenderer.SetPosition(1, lineTarget.position);
- }
- void OnTriggerEnter(Collider other)
- {
- if (other.CompareTag("Player"))
- {
- lineTarget = other.transform;
- drainCoroutine = DrainPower(other.GetComponent<Player>());
- StartCoroutine(drainCoroutine);
- }
- }
- void OnTriggerExit(Collider other)
- {
- if (other.CompareTag("Player"))
- {
- lineTarget = lineRenderer.transform;
- if (drainCoroutine != null)
- StopCoroutine(drainCoroutine);
- }
- }
- private IEnumerator DrainPower(Player player)
- {
-
- while (true)
- {
- yield return new WaitForSeconds(powerSuckDelay);
- switchLineRenderer(player);
- if (player.PowerLevel >= 2f)
- {
- if (powerLevel >= maxPower)
- {
- yield break;
- }
-
- PowerUp(1);
- player.PowerLevel -= 1f;
- UpdatePowerBar();
- }
- }
- }
- private void switchLineRenderer(Player player)
- {
- lineRenderer.enabled = false;
- if (player != null)
- {
- if (player.PowerLevel >= 2f)
- {
- lineRenderer.enabled = true;
- }
- }
- }
- }
|