void PerformTargeting()
    {
        Fleeing = false;
        Chasing = false;

        if (currentTarget == null || wandering == false || nav.enabled == false)
        {
            return;
        }

        if (JoeJeffCrowdSim.CheckRange(transform.position, currentTarget.transform.position, currentTarget.radius) == false)
        {
            //have moved out of range of target
            currentTarget = null;
            return;
        }
        if (currentTarget.flee == true) // flee from target
        {
            Fleeing = true;
            Vector3 targetDir = (currentTarget.transform.position - transform.position);
            targetDir.y = 0;
            targetDir.Normalize();
            nav.SetDestination(crowd.SampleNavMesh(transform.position - targetDir * fleeIncrement, 8));
        }
        if (currentTarget.flee == false) // chase target
        {
            Chasing = true;
            nav.SetDestination(crowd.SampleNavMesh(currentTarget.transform.position));
        }
    }
Beispiel #2
0
    /// <summary>
    /// Die and spawn a ragdoll
    /// </summary>
    public void Die(Vector3 forceVector, Vector3 forcePoint)
    {
        if (hasDied)
        {
            return;          // ensure only one ragdoll is spawned.
        }
        hasDied = true;
        JoeJeffCrowdSim.RegisterJoeJeffDeath(this);
        JoeJeffRagdoll rag = Instantiate(ragdollPrefab.gameObject, transform.position, transform.rotation).GetComponent <JoeJeffRagdoll>();

        rag.Ragdoll(transform, skeletonRoot, skinColor.skinColor, rigidbody.velocity, forceVector, forcePoint);
        Destroy(gameObject);
    }
Beispiel #3
0
 private void OnDestroy()
 {
     JoeJeffCrowdSim.DeRegisterCrowdTarget(this);
 }
Beispiel #4
0
 private void Start()
 {
     JoeJeffCrowdSim.RegisterCrowdTarget(this);
 }
 private void Awake()
 {
     instance = this;
 }