You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 
 

114 lines
2.9 KiB

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<WaterController>();
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<Rigidbody>().velocity = Vector3.zero;
NotificationServer.notify("restart scene");
}
}