Esempio n. 1
0
File: CMap.cs Progetto: mengtest/fs
        public Vector2 GetRandomPos(float x, float y, float range, eAIType aiType = eAIType.Player)
        {
            int resultNum = 0;

            int irange = (int)(range);
            int srange = irange * irange;
            int sign   = 1;
            int filter = 0;

            while (resultNum != 1)
            {
                int idivx = 0;
                int idivy = 0;
                if (aiType == eAIType.Player)
                {
                    idivx = resultNum + GameManager.Inst.GetClientRand(-irange, irange) + sign * filter;
                    idivy = resultNum + GameManager.Inst.GetClientRand(-irange, irange) - sign * filter;
                }
                else
                {
                    idivx = resultNum + GameManager.Inst.GetRand(-irange, irange) + sign * filter;
                    idivy = resultNum + GameManager.Inst.GetRand(-irange, irange) - sign * filter;
                }
                if (idivx == 0 || idivy == 0)
                {
                    filter++;
                    continue;
                }

                int ix = idivx % irange;
                int iy = idivy % irange;

                Vector2 bv = new Vector2(x + ix, y + iy);
                if (bCanMove((int)bv.x, (int)bv.y))
                {
                    filter    = 0;
                    resultNum = 1;
                    return(new Vector2((int)bv.x, (int)bv.y));
                }
                else if (filter > srange)
                {
                    resultNum = 1;
                    return(new Vector2(x, y));
                }
                else
                {
                    filter++;
                    sign = -sign;
                }
            }
            return(Vector3.zero);
        }
Esempio n. 2
0
    void AiSetting(eAIType aitype)
    {
        GameObject aiObject = new GameObject();

        aiObject.name = aitype.ToString();
        switch (aitype)
        {
        case eAIType.NormalEnemy:
        {
            ai = aiObject.AddComponent <NormalEnemy>();
        }
        break;

        case eAIType.RangeEnemy:
        {
            ai = aiObject.AddComponent <RangeEnemy>();
        }
        break;

        case eAIType.GiantEnemy:
        {
            ai = aiObject.AddComponent <GiantEnemy>();
        }
        break;

        case eAIType.BossEnemy:
        {
            ai = aiObject.AddComponent <BossEnemy>();
        }
        break;

        case eAIType.MiniBossEnemy:
        {
            ai = aiObject.AddComponent <MiniBossEnemy>();
        }
        break;
        }
        aiObject.transform.SetParent(SelfTransform);
    }
Esempio n. 3
0
    public static AI SpawnBlock(eAIType eType, float fX, float fZ, int iType)
    {
        if(_Pool.Count == 0)
        {
            Debug.Log("ERROR: No pooled AI");
            return null;
        }

        AI pObject = _Pool.First.Value;

        if(pObject != null)
        {
            _Pool.RemoveFirst();
            _Active.AddLast(pObject);

            pObject._Type = eType;
            pObject._X = fX;
            pObject._Z = fZ;
            pObject._Block = iType;

            pObject.Setup();

            return pObject;
        }

        return null;
    }
Esempio n. 4
0
    public static AI SpawnOnPath(eAIType eType, int iPathIndex, float fSpeed, float fStartDelay)
    {
        if(_Pool.Count == 0)
        {
            Debug.Log("ERROR: No pooled AI");
            return null;
        }

        AI pObject = _Pool.First.Value;

        if(pObject != null)
        {
            _Pool.RemoveFirst();
            _Active.AddLast(pObject);

            pObject._Type = eType;
            pObject.Setup();
            pObject._Walker.Set(iPathIndex,fSpeed);
            pObject._HasPath = true;
            Vector3 vPos = pObject._Walker.Walk(0.0f);
            pObject._X = vPos.x;
            pObject._Z = vPos.z;
            pObject._StartDelay = fStartDelay;

            return pObject;
        }

        return null;
    }
Esempio n. 5
0
    public static AI Spawn(eAIType eType, float fX, float fZ, float fVX = 0.0f, float fVZ = 0.0f)
    {
        if(_Pool.Count == 0)
        {
            Debug.Log("ERROR: No pooled AI");
            return null;
        }

        AI pObject = _Pool.First.Value;

        if(pObject != null)
        {
            _Pool.RemoveFirst();
            _Active.AddLast(pObject);

            pObject._Type = eType;
            pObject._X = fX;
            pObject._Z = fZ;
            pObject._VX = fVX;
            pObject._VZ = fVZ;

            pObject.Setup();
            pObject._HasPath = false;

            return pObject;
        }

        return null;
    }