using System.Collections; using System.Collections.Generic; using UnityEngine; using Networking.Server; public class FloatingOnWater : MonoBehaviour { bool characterInWater = true; public ClientList clientData; public List Names = new List(); public GameObject lilypad; GameObject player; string charName; public bool triggeranimate; public bool triggeranimate1; private void Start() { for(int i = 0; i < clientData.ConnectedClients.Count; i++) { Names.Add(clientData.ConnectedClients[i].characterAnimal + "(Clone)"); } } void OnTriggerEnter(Collider other) { for(int i = 0; i < Names.Count; i++) { if (other.gameObject.name == Names[i]) { characterInWater = true; charName = other.gameObject.name; } } } IEnumerator FloatCoroutine() { float elapsedTime = 0; Vector3 startPosition = lilypad.transform.position; Vector3 endPosition = new Vector3(lilypad.transform.position.x, lilypad.transform.position.y + 1.0f, lilypad.transform.position.z); Vector3 charStartPosition = player.transform.position; Vector3 charEndPosition = new Vector3(player.transform.position.x, 1, player.transform.position.z); float time = 0.8f; while (elapsedTime < time) { lilypad.transform.position = Vector3.Lerp(startPosition, endPosition, (elapsedTime / time)); player.transform.position = Vector3.Lerp(charStartPosition, charEndPosition, (elapsedTime / time)); yield return new WaitForEndOfFrame(); elapsedTime += Time.deltaTime; } player.transform.position = charEndPosition; lilypad.transform.position = endPosition; } IEnumerator SinkCoroutine() { float elapsedTime = 0; Vector3 startPosition = lilypad.transform.position; Vector3 endPosition = new Vector3(lilypad.transform.position.x, lilypad.transform.position.y - 1.0f, lilypad.transform.position.z); float time = 0.8f; while (elapsedTime < time) { lilypad.transform.position = Vector3.Lerp(startPosition, endPosition, (elapsedTime / time)); yield return new WaitForEndOfFrame(); elapsedTime += Time.deltaTime; } lilypad.transform.position = endPosition; } public void Animate() { if(characterInWater == true) { player = GameObject.Find(charName); StartCoroutine(FloatCoroutine()); } } public void returnToPosition() { StartCoroutine(SinkCoroutine()); } }