|
|
- using System.Collections;
- using System.Collections.Generic;
- using UnityEngine;
-
- public class BallController : MonoBehaviour
- {
-
- public bool EatHorse;
-
- public int HorseCount;
- public float size = 1;
- public GameObject horsePrefab;
-
- public HerdController herd;
- public float Speed = 10;
-
- private List<PlayerController> disabledHorses = new List<PlayerController>();
- private Rigidbody rigid;
- private Camera cam;
- private Vector2 recievdInput;
- private SphereCollider collider;
-
-
- private void Start()
- {
- herd = FindObjectOfType<HerdController>();
- rigid = GetComponent<Rigidbody>();
- collider = GetComponent<SphereCollider>();
- cam = Camera.main;
- Debug.Log(herd.Centre.position);
- }
-
- // Update is called once per frame
- void FixedUpdate()
- {
- if (EatHorse)
- {
- rigid.isKinematic = false;
- collider.enabled = true;
- foreach (PlayerController horse in herd.Herd)
- {
- if (horse.GetComponent<PlayerController>().enabled)
- {
- horse.AddForce((transform.position - horse.transform.position).normalized * 20);
-
- if (Vector3.Distance(horse.transform.position, transform.position) < size * 2)
- AddHorse(horse);
- }
-
- }
- }
- else
- {
- rigid.isKinematic = true;
- collider.enabled = false;
- size = 1;
- if (disabledHorses.Count != 0)
- {
- foreach (PlayerController horse in disabledHorses)
- {
- horse.enabled = true;
- horse.cController.enabled = true;
- horse.transform.parent = herd.transform;
-
- horse.moveDirection = Vector3.zero;
-
- var vec = horse.transform.eulerAngles;
- vec.x = Mathf.Round(vec.x / 90) * 90;
- vec.y = Mathf.Round(vec.y / 90) * 90;
- vec.z = Mathf.Round(vec.z / 90) * 90;
- horse.transform.eulerAngles = vec;
-
-
- }
- disabledHorses.Clear();
- }
-
-
- }
-
- DoMove();
- }
-
- public void DoMove()
- {
- Vector3 direction = cam.transform.rotation * new Vector3(recievdInput.x, 0.0f, recievdInput.y);
- rigid.AddForce(direction * Speed * Time.fixedDeltaTime,ForceMode.VelocityChange);
- }
-
- public void GetInput(Vector2 input)
- {
- recievdInput = input;
- }
-
-
- private void AddHorse(PlayerController horse)
- {
- size += 0.5f / (size*10);
- collider.radius = size;
- foreach(Transform child in transform)
- {
- child.localPosition = child.localPosition.normalized * size;
- }
-
- horse.GetComponent<PlayerController>().enabled = false;
- horse.GetComponent<CharacterController>().enabled = false;
-
-
- Vector3 position = Random.onUnitSphere * size + transform.position;
- horse.transform.position = position;
- horse.transform.rotation = Random.rotation;
- horse.transform.parent = transform;
-
- disabledHorses.Add(horse);
- }
-
-
-
- }
|