using System.Collections; using System.Collections.Generic; using UnityEngine; public class PlayerController : MonoBehaviour { public float cooldownWaveCreate = 0.5f; private float timeOfLastWave; public bool isLocked = false; public float power; public float radius; public float time; public GameObject waveRing; public ParticleSystem boatHitParticle; public int life = 3; public float lastDamageTime = 0; public static PlayerController instance; public GameObject[] lifeHearts; private Vector3 startPoint; public GameObject boat; void Start() { NotificationServer.register("show GameUI", showGameUI); NotificationServer.register("hide GameUI", hideGameUI); instance = this; startPoint = boat.transform.position; isLocked = true; } // Update is called once per frame void Update () { if (Input.GetButtonDown("Fire1") && !isLocked) { if (cooldownWaveCreate > Time.timeSinceLevelLoad - timeOfLastWave) return; timeOfLastWave = Time.timeSinceLevelLoad; // Debug.Log("Click"); RaycastHit hit; Ray ray = Camera.main.ScreenPointToRay(Input.mousePosition); LayerMask rayMask = (1 << 4); Debug.DrawRay(ray.origin, ray.direction * 100, Color.green); if (Physics.Raycast(ray, out hit, Mathf.Infinity,rayMask)) { WaterController waterScript = hit.collider.gameObject.GetComponent(); Debug.DrawLine(Camera.main.transform.position, hit.point, Color.red,1); // Debug.Log("I hit: " + hit.transform.name); if (waterScript != null) waterScript.CreateWave(hit.point, radius, power); } } } public void setLife(int life) { for (int i = 0; i < lifeHearts.Length; i++) { lifeHearts[i].SetActive((i < life)); } this.life = life; } public void takeOneDamage() { // NotificationServer.notify("shake camera"); NotificationServer.notify("flash damage"); boatHitParticle.Play(); if (Time.time > lastDamageTime + 2 && life > 0) { setLife(life - 1); lastDamageTime = Time.time; if (life == 0) { NotificationServer.notify("fade bgm"); NotificationServer.notify("play sfx", "shipSpotted:0.5"); NotificationServer.notify("play sfx", "sinkingShip_2:0.75"); NotificationServer.notify("show GameOverPanel"); NotificationServer.notify("hide GameUI"); } } } private void showGameUI() { // Debug.Log("UI open"); isLocked = false; } private void hideGameUI() { // Debug.Log("UI close"); isLocked = true; } public void restartScene() { setLife(3); boat.transform.position = startPoint; boat.GetComponent().velocity = Vector3.zero; NotificationServer.notify("restart scene"); } }