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.
 
 
 
 
 
 

81 lines
2.7 KiB

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