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());
|
|
}
|
|
}
|