コード例 #1
0
    public void Explode()
    {
        Collider[] colliders = Physics.OverlapSphere(transform.position, blastRadius);

        foreach (Collider nearbyObject in colliders)
        {
            Rigidbody  rb         = nearbyObject.GetComponent <Rigidbody>();
            RagdollRig ragdollRig = nearbyObject.GetComponent <RagdollRig>();

            if (rb != null)
            {
                //if (ragdollRig != null)
                //ragdollRig.DoConcussion();
                rb.AddExplosionForce(blastForce, transform.position, blastRadius, upwardsModifier, ForceMode.VelocityChange);
                //Play Explosion SFX
            }
        }
        foreach (Collider nearbyObject in colliders)
        {
            if (nearbyObject.CompareTag("Player"))
            {
                Debug.Log("FOUND IT!!");
                nearbyObject.GetComponentInParent <StatusHelper>().pc.Hurt(explosionDamage);
            }
            break;
        }

        Destroy(Instantiate(effect, transform.position, Quaternion.identity), 3);
        Destroy(this.gameObject, 0);
    }
コード例 #2
0
 public StatusEffect(Effects.Type _myType, int _ticks, float _power, PlayerController _pc, RagdollRig _rr)
 {
     pc      = _pc;
     rr      = _rr;
     myType  = _myType;
     myPower = _power;
     myTicks = _ticks;
 }
コード例 #3
0
    private void Awake()
    {
        if (GetComponent <PlayerController>() != null)
        {
            pc = GetComponent <PlayerController>();
        }

        if (GetComponent <PlayerController>() != null)
        {
            rr = GetComponent <RagdollRig>();
        }
    }
コード例 #4
0
    private IEnumerator Expload(float delay = 0f)
    {
        if (delay != 0)
        {
            yield return(new WaitForSeconds(delay));
        }

        //Change scale
        if (changeScale)
        {
            float i = 0f;

            while (i < timeToScale)
            {
                i += Time.deltaTime;
                transform.localScale = Vector3.Lerp(startScale, endScale, i / timeToScale);
                yield return(null);
            }
        }

        if (explosionEffect != null)
        {
            Destroy(Instantiate(explosionEffect, transform.position, Quaternion.identity), 3);
        }

        Collider[] colliders = Physics.OverlapSphere(transform.position, blastRadius);

        foreach (Collider nearbyObject in colliders)
        {
            Rigidbody  rb         = nearbyObject.GetComponent <Rigidbody>();
            RagdollRig ragdollRig = nearbyObject.GetComponent <RagdollRig>();

            if (rb != null)
            {
                //if (ragdollRig != null)
                //ragdollRig.DoConcussion();
                rb.AddExplosionForce(blastForce, transform.position, blastRadius, upwardsModifier, ForceMode.VelocityChange);
                //Play Explosion SFX
            }
        }

        if (destroyAfterExplosion)
        {
            Destroy(gameObject);
        }
    }