using System.Collections;
|
|
using System.Collections.Generic;
|
|
using UnityEngine;
|
|
using Networking.Client;
|
|
|
|
public class CannonShot : MonoBehaviour
|
|
{
|
|
public bool shootingRight;
|
|
public ConnectedClients clientData;
|
|
GameObject player;
|
|
string charname;
|
|
public List<string> Names;
|
|
Rigidbody rb;
|
|
|
|
private void Start()
|
|
{
|
|
rb = this.gameObject.GetComponent<Rigidbody>();
|
|
for (int i = 0; i < clientData.AllClients.Count; i++)
|
|
{
|
|
Names.Add(clientData.AllClients[i].characterAnimal + "(Clone)");
|
|
}
|
|
}
|
|
|
|
IEnumerator PushLeftCoroutine(float time)
|
|
{
|
|
float elapsedTime = 0;
|
|
Vector3 startPosition = transform.position;
|
|
Vector3 endPosition = new Vector3(transform.position.x, transform.position.y, transform.position.z + 1.0f);
|
|
time *= 0.8f;
|
|
yield return new WaitForSeconds(0.05f);
|
|
while (elapsedTime < time)
|
|
{
|
|
transform.position = Vector3.Lerp(startPosition, endPosition, (elapsedTime / time));
|
|
yield return new WaitForEndOfFrame();
|
|
elapsedTime += Time.deltaTime;
|
|
}
|
|
transform.position = endPosition;
|
|
Destroy(gameObject);
|
|
}
|
|
IEnumerator PushRightCoroutine(float time)
|
|
{
|
|
float elapsedTime = 0;
|
|
Vector3 startPosition = transform.position;
|
|
Vector3 endPosition = new Vector3(transform.position.x, transform.position.y, transform.position.z - 1.0f);
|
|
time *= 0.8f;
|
|
yield return new WaitForSeconds(0.05f);
|
|
while (elapsedTime < time)
|
|
{
|
|
transform.position = Vector3.Lerp(startPosition, endPosition, (elapsedTime / time));
|
|
yield return new WaitForEndOfFrame();
|
|
elapsedTime += Time.deltaTime;
|
|
}
|
|
transform.position = endPosition;
|
|
Destroy(gameObject);
|
|
}
|
|
|
|
void OnTriggerEnter(Collider other)
|
|
{
|
|
foreach (string name in Names)
|
|
{
|
|
if (other.gameObject.name == name)
|
|
{
|
|
rb.velocity = Vector3.zero;
|
|
player = GameObject.Find(charname);
|
|
Rigidbody playerRB = player.GetComponent<Rigidbody>();
|
|
if (shootingRight == true)
|
|
{
|
|
StartCoroutine(PushRightCoroutine(0.5f));
|
|
player.GetComponent<Character>().CannonRMove(0.5f);
|
|
}
|
|
else
|
|
{
|
|
StartCoroutine(PushLeftCoroutine(0.5f));
|
|
player.GetComponent<Character>().CannonLMove(0.5f);
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|