hey guys.
I i felt like sharing this code. Its not perfect but I hope it helps somebody.
usingUnityEngine;
usingUnityEditor;
usingSystem.Collections;
usingSystem.Collections.Generic;
usingSystem.Linq;
publicclasscurious : MonoBehaviour {
publicfloatMoveStep = 10.0f;
floatDist = 0.0f;
floatDisT = 0.0f;
boolm_bIsMoving;
Vector3Position;
Vector3dir;
Vector3mVec;
privateVector3velocity = Vector3.zero;
floatfTimer = 2.0f;
floatfrealtime;
floattimeSU;
privatefloatspeed = 1.5f;
GameObjectobject2;
publicGameObjectobject1;
publicList objects1 = newList();
publicfloatforce ;
privateVector3pos;
privatefloatrandom;
floatRad;
intsizeOfList;
publicfloatmin = 0.0F;
publicfloatmax = 0.0F;
voidStart()
{
force = (Dist / Time.deltaTime) * random;
random = Random.Range (min, max);
objects1 = GameObject.FindGameObjectsWithTag (âaudioâ).ToList();
mVec = this.gameObject.transform.position;
m_bIsMoving = false;
pos = transform.position;
FindTarget();
}
voidOnTriggerExit(ColliderCol)
{
if (Col.gameObject.tag == âGround_Smokeâ) {
objects1 = GameObject.FindGameObjectsWithTag (âaudioâ).ToList();
inti = 1;
objects1.Sort();
Debug.Log(objects1*);*
m_bIsMoving = false;
}
}
voidOnTriggerEnter(Colliderother)
{
if (other.gameObject.CompareTag(âaudioâ))
{
sizeOfList = objects1.Count -1;
intrad = Random.Range(0,sizeOfList);
object1 = objects1[rad];
objects1.Remove(other.gameObject);
FindTarget();
}
if (other.gameObject.CompareTag(âGround_Smokeâ)) {
m_bIsMoving = true;
}
}
voidUpdate()
{
intrads = Random.Range(1,objects1.Count);
intt = objects1.Count - rads ;
object2= objects1[t];
print(object2);
floatangle = 0.0F;
floatvel = 1;
floattimeSpent = 1;
Rad = Random.Range (1F,2F);
timeSU = Time.fixedTime * Rad;
floatfollowDistance = 1.0F;
mVec = this.gameObject.transform.position;
this.gameObject.transform.position = mVec;
if( this.gameObject.transform.position != Position)
{
for(inti=1; i>objects1.Count; i++)
{
dir = objects1*.gameObject.transform.position - this.gameObject.transform.position;*
dir = dir.normalized - newVector3(random * 1, random * 1, random * 1);
GetComponent().AddRelativeForce(dir * force);
Debug.Log(objects1*);*
}
if (object1 != null)
{
Dist = Vector3.Distance(this.gameObject.transform.position, object2.gameObject.transform.position);
Vector3TargetPosition = object1.transform.position;
floatmove;
move = Dist - Time.deltaTime;
this.gameObject.transform.position = Vector3.MoveTowards(this.gameObject.transform.position, TargetPosition, (MoveStep * (move)));
}
if (Dist > 10){
DisT = Vector3.Distance(this.gameObject.transform.position, object2.gameObject.transform.position);
Debug.Log(Dist);
timeSpent = DisT * 0.0001F;
angle = timeSpent / Time.deltaTime;
print(angle);
this.gameObject.transform.RotateAround(object1.transform.position, Vector3.up, angle);
}
}
m_bIsMoving = true;
}
voidFindTarget()
{
floatlowestDist = Mathf.Infinity;
for(inti=1; i<objects1.Count; i++)
{
floatdist = Vector3.Distance(objects1*.transform.position, transform.position);*
if (dist<lowestDist)
{
sizeOfList = objects1.Count -1;
intrad = Random.Range(1,sizeOfList);
object1 = objects1[rad];
lowestDist = dist;
}
//object1 = objects1*;*
FindTarget();
//sortedOrder.FirstOrDefault();
}
objects1 = GameObject.FindGameObjectsWithTag (âaudioâ).ToList();
FindTarget();
}
publicboolisMoving()
{
returnm_bIsMoving;
}
}