I debugged the current follower straight from the code where it says what current follower is, and it came back correct. but the variable equal to it is null all the time.
using UnityEngine;
using System.Collections;
public class Monster : MonoBehaviour {
public int Health;
public float Speed;
public int Damage;
public float IdleDistance;
public float AttackDistance;
public float AttackRange;
public float GiveUpDistance;
private float Distance;
private float FollowerDistance;
private GameObject PrimaryTarget;
private Follower SecondaryTarget;
private enum PrimarySecondaryNull {Primary, Secondary, None}
private PrimarySecondaryNull AttackState;
void Start () {
PrimaryTarget = GameObject.Find ("Player");
AttackState = PrimarySecondaryNull.None;
}
void Update () {
Debug.Log (SecondaryTarget);
Distance = Vector3.Distance (PrimaryTarget.rigidbody2D.transform.position, rigidbody2D.transform.position);
if (SecondaryTarget)
{
SecondaryTarget = GetComponent <OneFollower> ().CurrentFollower;
FollowerDistance = Vector3.Distance (SecondaryTarget.rigidbody2D.transform.position, rigidbody2D.transform.position);
}
if (Distance < AttackDistance && SecondaryTarget == null)
{
AttackState = PrimarySecondaryNull.Primary;
}
if (Distance < AttackDistance && Distance <= FollowerDistance)
{
AttackState = PrimarySecondaryNull.Primary;
}
if (FollowerDistance < AttackDistance && FollowerDistance < Distance && SecondaryTarget != null)
{
AttackState = PrimarySecondaryNull.Secondary;
}
if (Distance > GiveUpDistance && SecondaryTarget == null)
{
AttackState = PrimarySecondaryNull.None;
}
if (Distance > GiveUpDistance && FollowerDistance > GiveUpDistance)
{
AttackState = PrimarySecondaryNull.None;
}
if (AttackState == PrimarySecondaryNull.Primary)
{
if (PrimaryTarget.rigidbody2D.transform.position.x > rigidbody2D.transform.position.x + IdleDistance)
{
rigidbody2D.transform.position += Vector3.right * Speed * Time.deltaTime;
}
if (PrimaryTarget.rigidbody2D.transform.position.x < rigidbody2D.transform.position.x - IdleDistance)
{
rigidbody2D.transform.position += Vector3.left * Speed * Time.deltaTime;
}
if (PrimaryTarget.rigidbody2D.transform.position.y > rigidbody2D.transform.position.y + IdleDistance)
{
rigidbody2D.transform.position += Vector3.up * Speed * Time.deltaTime;
}
if (PrimaryTarget.rigidbody2D.transform.position.y < rigidbody2D.transform.position.y - IdleDistance)
{
rigidbody2D.transform.position += Vector3.down * Speed * Time.deltaTime;
}
}
if (AttackState == PrimarySecondaryNull.Secondary)
{
if (SecondaryTarget.rigidbody2D.transform.position.x > rigidbody2D.transform.position.x + IdleDistance)
{
rigidbody2D.transform.position += Vector3.right * Speed * Time.deltaTime;
}
if (SecondaryTarget.rigidbody2D.transform.position.x < rigidbody2D.transform.position.x - IdleDistance)
{
rigidbody2D.transform.position += Vector3.left * Speed * Time.deltaTime;
}
if (SecondaryTarget.rigidbody2D.transform.position.y > rigidbody2D.transform.position.y + IdleDistance)
{
rigidbody2D.transform.position += Vector3.up * Speed * Time.deltaTime;
}
if (SecondaryTarget.rigidbody2D.transform.position.y < rigidbody2D.transform.position.y - IdleDistance)
{
rigidbody2D.transform.position += Vector3.down * Speed * Time.deltaTime;
}
}
}
}