예제 #1
0
    IEnumerator LaunchExplodeDeath()
    {
        GetComponent <NavMeshAgent>().enabled = false;

        Rigidbody rb = GetComponent <Rigidbody>();

        rb.useGravity     = true;
        rb.isKinematic    = false;
        rb.freezeRotation = false;
        rb.AddForce((Random.insideUnitSphere + (Vector3.up * 2)).normalized * 50000);
        rb.maxAngularVelocity = Mathf.Infinity;
        rb.angularVelocity    = Random.insideUnitSphere * Random.Range(20, 80);

        yield return(new WaitForSeconds((FindObjectOfType <BaseOverseer>().allPartyDied ? 3 : 1)));

        if (deathEffect != null)
        {
            ParticleSystem[] AllInside =
                ((GameObject)Instantiate(deathEffect, transform.position, Quaternion.identity)).GetComponentsInChildren <ParticleSystem>();

            BaseOverseer overseer = FindObjectOfType <BaseOverseer>();
            if (overseer.allPartyDied && GetComponent <BaseEntity>() == overseer.leader)
            {
                foreach (ParticleSystem curr in AllInside)
                {
                    curr.startLifetime *= 5;
                }
            }
        }

        Destroy(gameObject);
    }
예제 #2
0
    IEnumerator GivenSecondChance()
    {
        BaseOverseer overseer = FindObjectOfType <BaseOverseer>();

        GetComponent <NavMeshAgent>().enabled = true;
        overseer.AddToParty(this);
        NowInParty();

        TakeDamage(1000, ElementType.Heal);
        transform.GetChild(1).GetComponent <Renderer>().enabled = true;

        Rigidbody rb = GetComponent <Rigidbody>();

        rb.useGravity     = false;
        rb.isKinematic    = true;
        rb.freezeRotation = true;
        rb.angularDrag   /= 10;

        hasDeathThrown = false;

        while (transform.up != Vector3.up)
        {
            transform.up = Vector3.Slerp(transform.up, Vector3.up, 4 * Time.deltaTime);
            yield return(null);
        }
        yield return(null);
    }
예제 #3
0
 // Use this for initialization
 void Start()
 {
     my           = GetComponentInParent <OsmiumChrysanthemum>();
     player       = FindObjectOfType <BaseOverseer>();
     target       = player.leader.transform;
     lineOfSight  = GetComponentInChildren <LineRenderer>();
     currWaitTime = maxWaitTime;
     eyeBase      = transform.GetChild(0);
     laserEye     = transform.GetChild(0).GetChild(0).GetChild(5).GetChild(0);
     enabled      = false;
 }
예제 #4
0
    void OnCollisionEnter(Collision coll)
    {
        BaseEntity   collidedWith = coll.gameObject.GetComponent <BaseEntity>();
        BaseOverseer overseer     = FindObjectOfType <BaseOverseer>();

        if (collidedWith == overseer.leader && hasDeathThrown)
        {
            StopAllCoroutines();

            // REVIVE
            StartCoroutine(GivenSecondChance());
        }
    }