Пример #1
0
    public bool EjectPart(CombotPart part)
    {
        if (part == null)
        {
            return(false);
        }
        Instantiate(
            gameManager.GetPrefab("Explosion"),
            part.transform.position,
            part.transform.rotation,
            part.transform.parent
            );
        Instantiate(
            gameManager.GetPrefab("Explosion"),
            part.transform.position,
            part.transform.rotation,
            part.transform
            );

        part.transform.SetParent(null);
        Rigidbody[] rbs = part.transform.GetComponentsInChildren <Rigidbody>();
        foreach (Rigidbody rb in rbs)
        {
            rb.useGravity  = true;
            rb.isKinematic = false;
        }
        Destroy(part.GetComponent <CharacterJoint>());
        part.GetComponent <Rigidbody>().AddForce(Vector3.up * 10, ForceMode.Acceleration);
        if (part.PartType == CombotPart.Type.Legs || part.PartType == CombotPart.Type.Head)
        {
            unitControl.Die(Vector3.zero);
        }
        animator.Rebind();
        return(true);
    }
Пример #2
0
    void Explode()
    {
        Collider[] nearbyObjects = Physics.OverlapSphere(transform.position, blastRadius);
        foreach (Collider thing in nearbyObjects)
        {
            UnitControl enemyInRange = thing.GetComponent <UnitControl>();
            if (enemyInRange && !enemyInRange.IsDead())
            {
                if (Vector3.Distance(transform.position, enemyInRange.transform.position) < blastRadius * 0.25f)
                {
                    enemyInRange.Die(true);
                }
                else
                {
                    enemyInRange.Knockback(transform.position, damage);
                }
            }
        }
        GameObject effect = Instantiate(explosionEffect, transform.position, Quaternion.identity) as GameObject;

        effect.gameObject.AddComponent <ParticleKiller>();
        Destroy(gameObject);
    }