Station.cs 1.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657
  1. using System.Collections;
  2. using System.Collections.Generic;
  3. using UnityEngine;
  4. public class Station : MonoBehaviour
  5. {
  6. public float maxPower;
  7. public Transform gauge;
  8. public float powerLevel;
  9. // Use this for initialization
  10. void Start ()
  11. {
  12. powerLevel = 0;
  13. }
  14. // Update is called once per frame
  15. void Update () {
  16. UpdatePowerBar();
  17. }
  18. void PowerUp(float delta)
  19. {
  20. powerLevel += delta;
  21. if (powerLevel >= maxPower)
  22. Debug.Log("Station at max power!");
  23. UpdatePowerBar();
  24. }
  25. private void UpdatePowerBar()
  26. {
  27. var level = powerLevel / maxPower;
  28. gauge.localScale = new Vector3(1, level, 1);
  29. }
  30. void OnTriggerEnter(Collider other)
  31. {
  32. if (other.CompareTag("Player"))
  33. {
  34. StartCoroutine(DrainPower(other.GetComponent<Player>()));
  35. }
  36. }
  37. private IEnumerator DrainPower(Player player)
  38. {
  39. while (player.PowerLevel >= 1f)
  40. {
  41. powerLevel += 1;
  42. player.PowerLevel -= 1f;
  43. UpdatePowerBar();
  44. yield return null;
  45. }
  46. }
  47. }