/// <summary> /// 自分のコライダが何かに接触した場合、そのオブジェクトにI_Damageableインターフェースが実装されていた場合、そのダメージ処理を呼ぶ /// </summary> /// <param name="other"></param> private void OnTriggerEnter(Collider other) { I_Damageable damage = other.gameObject.GetComponent <I_Damageable>(); if (damage != null) { damage.Damage(parentPlayer); } }
private void OnCollisionEnter2D(Collision2D other) { MarbleCtrl hitMarbleCtrl = other.gameObject.GetComponent <MarbleCtrl>(); /** 反射 **/ Vector3 normal = other.contacts[0].normal; if (other.contacts.Length > 0 && hitMarbleCtrl == null) { _rigidbody2D.velocity = Vector3.Reflect(_rigidbody2D.velocity, normal); GameObject hitWallVfxObj = Instantiate(hitWallVFX, transform.position, Quaternion.identity); Quaternion refrectRot = Quaternion.LookRotation(Vector3.forward, normal); hitWallVfxObj.transform.rotation = refrectRot; SoundCtrl.PlayOneShot(hitWallSE); } if (hitMarbleCtrl != null && _isFlickEnd) { hitMarbleCtrl.SetVelocity(normal * 0.4f); } /** ストライク時 **/ I_StrikeDetectable strikeDetectable = other.gameObject.GetComponent <I_StrikeDetectable>(); if (strikeDetectable != null) { if (strikeDetectable.IsDetectable == false) { return; } strikeDetectable.StrikeDetect(); } I_Damageable damageable = other.gameObject.GetComponent <I_Damageable>(); if (damageable != null) { if (damageable.IsDamageable) { DamageInfo damageInfo = new DamageInfo(damageValue: 10.0f, attacker: this.gameObject); damageable.ApplyDamage(damageInfo: damageInfo); } } }