Beispiel #1
0
 public override void ReduceHealth(int damage)
 {
     if (objectState == ObjectState.Die)
     {
         return;
     }
     objectData.objectHealth -= damage;
     if (objectData.objectHealth <= 0)
     {
         //dead effect.
         for (int i = 0; i < 30; i++)
         {
             var corpse = GameObject.CreatePrimitive(PrimitiveType.Cube);
             corpse.transform.position   = gameObject.transform.position + (new Vector3(Random.Range(-0.3f, 0.3f), Random.Range(-0.3f, 0.3f), Random.Range(-0.3f, 0.3f)));
             corpse.transform.localScale = new Vector3(0.3333f, 0.3333f, 0.3333f);
             corpse.GetComponent <Renderer>().material = PrefabsManager.GetMaterialColor(GetObjectElement(), false);
             corpse.AddComponent <Rigidbody>();
             Destroy(corpse, Random.Range(2.5f, 3.5f));
         }
         //end dead effect
         OnHeroDie();
     }
 }
    public virtual void ReduceHealth(int damage)
    {
        objectData.objectHealth -= damage;
        if (objectData.objectHealth <= 0)
        {
            //dead effect.
            for (int i = 0; i < 15; i++)
            {
                GameObject corpse = GameObject.CreatePrimitive(PrimitiveType.Cube);
                corpse.transform.position   = gameObject.transform.position + (new Vector3(Random.Range(-0.3f, 0.3f), Random.Range(-0.3f, 0.3f), Random.Range(-0.3f, 0.3f)));
                corpse.transform.localScale = new Vector3(0.3333f, 0.3333f, 0.3333f);
                corpse.GetComponent <Renderer>().material = PrefabsManager.GetMaterialColor(GetObjectElement(), !isEnemy);
                corpse.AddComponent <Rigidbody>();
                Destroy(corpse, Random.Range(2.5f, 3.5f));
            }

            //end dead effect
            if (objectManager == null)
            {
                if (isEnemy)
                {
                    objectManager = Directors.enemyManager;
                }
                else
                {
                    objectManager = Directors.playerManager;
                }
            }
            if (isEnemy && objectData.objectAttackRange == 9f)
            {
                Directors.cameraController.ScreenShake(ScreenShakeMagnitude.Small);
            }
            objectManager.RemoveObject(this);
            Destroy(gameObject);
        }
    }