// Start is called before the first frame update void Start() { _instance = this; Invoke("UpdateCombo", .1f); }
/// <summary> /// Choses what to do, depending on the object hit and the kind of bullet /// </summary> /// <param name="collideTo"></param> /// <param name="v3HitPosition"></param> /// <param name="bExplodeAtImpact"></param> /// <param name="fExplosionRange"></param> /// <param name="bActivateStopTimeAtImpact"></param> /// <param name="bulletDamage"></param> /// <param name="explosionForce"></param> /// <param name="explosionShake"></param> public void OnBulletHit(GameObject collideTo, Vector3 v3HitPosition, bool bExplodeAtImpact, float fExplosionRange, bool bActivateStopTimeAtImpact, int bulletDamage, float explosionForce, float explosionShake, float bulletStun, string sBulletName, bool explosionDealsDamage) { C_ComboManager comboInstance = C_ComboManager.Instance; if (collideTo.gameObject.layer == 12 || collideTo.gameObject.layer == 9) { GetComponent <C_Fx>().ImpactOnEnnemi(v3HitPosition); comboInstance.AddCombo(1); Invoke("HitMarkerSoundFunc", 0.05f * Time.timeScale); } else { if (collideTo.GetComponent <C_ShootTrigger>() == null && collideTo.GetComponent <C_TriggerShootDetection>() == null && collideTo.GetComponent <C_ShooterBullet>() == null) { comboInstance.BreakCombo(true); } GetComponent <C_Fx>().ImpactOnWalls(v3HitPosition); } if (bExplodeAtImpact) { GetComponent <C_Fx>().BulletExplosion(v3HitPosition, fExplosionRange); Collider[] hitItems = Physics.OverlapSphere(v3HitPosition, fExplosionRange); bool hitableAffected = false; if (collideTo.GetComponent <C_BulletAffected>()) { collideTo.GetComponent <C_BulletAffected>().OnBulletHit(bulletDamage, bulletStun, sBulletName); } foreach (Collider hitObj in hitItems) { if (hitObj.GetComponent <C_BulletAffected>() != null) { // TODO : // Kill entité affectée. hitableAffected = true; if (explosionDealsDamage) { hitObj.GetComponent <C_BulletAffected>().OnBulletHit(bulletDamage, bulletStun, sBulletName); } hitObj.GetComponent <C_BulletAffected>().OnExplosionAffect(v3HitPosition, explosionForce, fExplosionRange, sBulletName); } } if (hitableAffected) { GameObject.FindObjectOfType <C_Ui>().HitSomethingImportant(); } GameObject.FindObjectOfType <C_Camera>().AddShake(explosionShake); } else { // Kill mais pas en AoE if (collideTo.GetComponent <C_BulletAffected>() != null) { // TODO : // Kill entité affectée. collideTo.GetComponent <C_BulletAffected>().OnBulletHit(bulletDamage, bulletStun, sBulletName); GameObject.FindObjectOfType <C_Ui>().HitSomethingImportant(); collideTo.GetComponent <C_BulletAffected>().OnSoloHitPropulsion(v3HitPosition, explosionForce, sBulletName); } } }