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.
 
 
 
 
 
 

75 lines
2.1 KiB

using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class WaterController : MonoBehaviour {
#region Unity Functions
// Use this for initialization
void Start() {
}
// Update is called once per frame
void Update() {
}
#endregion Unity Fucntions
#region Interaction Functions
/// <summary>
/// Pushes any objects in water away from this point
/// </summary>
/// <param name="point"> point where water is createds</param>
/// <param name="radius"> radius of effected object</param>
/// <param name="power"> power with chich the objects are pushed</param>
public void CreateWave(Vector3 point, float radius, float power){
//find all colliders within the wave distance
Collider[] colliders = Physics.OverlapSphere(point, radius);
foreach (Collider hit in colliders) {
Rigidbody rb = hit.GetComponent<Rigidbody>();
if (rb != null)
rb.AddExplosionForce(power, point, radius, 0.0f);
}
#endregion Interaction Functions
}
#region Collision Functions
void OnTriggerEnter(Collider other) {
//calls appropriate function if the object should interact with the water on enter
WaterObject waterInteraction = other.gameObject.GetComponent<WaterObject>();
if (waterInteraction != null) {
waterInteraction.OnWaterEnter();
}
}
void OnTriggerStay(Collider other) {
//calls appropriate function if the object should interact with the water on stay
WaterObject waterInteraction = other.gameObject.GetComponent<WaterObject>();
if (waterInteraction != null) {
waterInteraction.OnWaterStay();
}
}
void OnTriggerExit(Collider other) {
//calls appropriate function if the object should interact with the water on exit
WaterObject waterInteraction = other.gameObject.GetComponent<WaterObject>();
if (waterInteraction != null) {
waterInteraction.OnWaterExit();
}
}
#endregion Collision Functions
}