Beispiel #1
0
    protected override void CollisionEnter(Collision other)
    {
        M_Rigidbody.Sleep();

        BulletMark bulletMark = other.gameObject.GetComponent <BulletMark>();
        AIBase     ai         = other.gameObject.GetComponentInParent <AIBase>();

        // 攻击环境物体.
        if (bulletMark != null)
        {
            bulletMark.CreateBulletMark(hit);
            bulletMark.Hp -= Damage;
        }

        // 攻击AI角色.
        else if (ai != null)
        {
            // 头部伤害加倍.
            if (other.gameObject.name == "Head")
            {
                ai.Life -= 2 * Damage;
                ai.HitHeadState();
            }
            else
            {
                ai.Life -= Damage;
                ai.HitNormalState();
            }

            ai.PlayEffect(hit);
        }

        gameObject.SetActive(false);
    }
Beispiel #2
0
    /// <summary>
    /// 射击.
    /// </summary>
    protected override void Shoot()
    {
        if (hit.point != Vector3.zero)
        {
            BulletMark bulletMark = hit.collider.GetComponent <BulletMark>();
            AIBase     ai         = hit.collider.GetComponentInParent <AIBase>();

            // 射击到环境物体.
            if (bulletMark != null)
            {
                bulletMark.CreateBulletMark(hit);
                bulletMark.Hp -= Damage;
            }

            // 攻击AI角色.
            else if (ai != null)
            {
                // 头部伤害加倍.
                if (hit.collider.gameObject.name == "Head")
                {
                    ai.Life -= 2 * Damage;
                    ai.HitHeadState();
                }
                else
                {
                    ai.Life -= Damage;
                    ai.HitNormalState();
                }

                ai.PlayEffect(hit);
            }
        }
        else
        {
            GameObject.Instantiate <GameObject>(m_AssaultRifleView.Prefab_Bullet,
                                                hit.point, Quaternion.identity);
        }

        Durable--;
    }
Beispiel #3
0
    /// <summary>
    /// 碰撞事件.
    /// </summary>
    protected override void CollisionEnter(Collision other)
    {
        GameObject.Destroy(M_Rigidbody);
        GameObject.Destroy(m_BoxCollider);

        BulletMark bulletMark = other.gameObject.GetComponent <BulletMark>();
        AIBase     ai         = other.gameObject.GetComponentInParent <AIBase>();

        // 攻击环境物体.
        if (bulletMark != null)
        {
            bulletMark.Hp -= Damage;
            bulletMark.PlayHitAudio(hit);
        }

        // 攻击AI角色.
        else if (ai != null)
        {
            // 头部伤害加倍.
            if (other.gameObject.name == "Head")
            {
                ai.Life -= 2 * Damage;
                ai.HitHeadState();
            }
            else
            {
                ai.Life -= Damage;
                ai.HitNormalState();
            }

            ai.PlayEffect(hit);
        }

        // 通用效果展现.
        M_Transform.SetParent(other.gameObject.GetComponent <Transform>());
        StartCoroutine("TailAnimation", m_PivotTransform);
    }