Exemple #1
0
    /// <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);
        }
    }
Exemple #2
0
    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);
            }
        }
    }