コード例 #1
0
ファイル: AIHitUnit.cs プロジェクト: Ribosome2/MyAIEngine
    void CheckHit()
    {
        if (mHitData.hitCheckData.shapeType == EHitCheckShape.LaserBeam)
        {
            HitCheckBase hitCheck = mHitData.hitCheckData;
            RaycastHit[] hits     = Physics.SphereCastAll(pos, mHitData.hitCheckData.radius, moveDirection, hitCheck.height);

            if (hits != null && hits.Length > 0)
            {
                for (int hitIndex = 0; hitIndex < hits.Length; hitIndex++)
                {
                    RaycastHit hit = hits[hitIndex];
                    for (int i = 0; i < AIMgr.instance.listAIs.Count; i++)
                    {
                        AIUnit ai = AIMgr.instance.listAIs[i];
                        if (ai.Controller == hit.collider)
                        {
                            //不在攻击频率内的,跳过
                            if (IsCannotHit(ai))
                            {
                                continue;
                            }
                            else
                            {
                                ai.OnGetHit();
                                RecordHit(ai);
                            }
                        }
                    }
                }
            }
        }
        else
        {
            for (int i = 0; i < AIMgr.instance.listAIs.Count; i++)
            {
                AIUnit ai = AIMgr.instance.listAIs[i];
                //不在攻击频率内的,跳过
                if (IsCannotHit(ai))
                {
                    continue;
                }
                else
                {
                    if (ai.CheckHit(mOwner, this)) //攻击成功,要记录当前攻击时间
                    {
                        RecordHit(ai);
                    }
                }
            }
        }
    }