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); } }