|
|
- using System.Collections;
- using System.Collections.Generic;
- using UnityEngine;
- using Networking.Server;
-
- public class FloatingOnWater : MonoBehaviour
- {
- bool characterInWater = true;
- public ClientList clientData;
- public List<string> Names = new List<string>();
- 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());
- }
- }
|