Пример #1
0
 public bool GetEnemyData(EnemyType index, out EnemyStruct enemyData) {
     if (enemyList.TryGetValue((int)index, out enemyData) == false) {
         Debug.LogWarning("not existed Data: " + index.ToString());
         return false;
     }
     return true;
 }
Пример #2
0
    void ResetData(SquadronMemberStruct data)
    {
        EnemyStruct enemyStruct = SystemManager.Instance.EnemyTable.GetEnemy(data.EnemyID);

        CurrentHP       = MaxHP = enemyStruct.MaxHP;
        Damage          = enemyStruct.Damage;
        crashDamage     = enemyStruct.CrashDamage;
        BulletSpeed     = enemyStruct.BulletSpeed;
        FireRemainCount = enemyStruct.FireRemainCount;
        GamePoint       = enemyStruct.GamePoint;


        AppearPoint    = new Vector3(data.AppearPointX, data.AppearPointY, 0);
        DisappearPoint = new Vector3(data.DisappearPointX, data.DisappearPointY, 0);

        CurrentState         = State.Ready;
        LastActionUpdateTime = Time.time;

        isDead = false; //죽은 녀석이 다시 캐시로 들어가는 경우가 있기 때문에 최초 reset마다 초기화
    }
Пример #3
0
    // Use this for initialization
    void Start()
    {
        bossList = new List<GameObject>();
        managedEnemyList = new List<EnemyStruct>();
        //tr = GameObject.FindGameObjectWithTag(Tags.terrain).GetComponent<Terrain>();
        playerstate = PlayerState._instance;
        canAttackEnemy = new List<GameObject>();
        buildPos = new Vector3(0, 0, 0);


        #region 保存したデータから、敵の位置データを貰う
        List<EnemyPositionData> enemyPositionDataList = GameController._instance.GetEnemyPosition(SceneInfomation._instance.FloorNumber);
        EnemyStruct enemyArea;
        if (enemyPositionDataList != null)
        {
            for (int i = 0; i < enemyPositionDataList.Count; i++)
            {
                enemyArea = new EnemyStruct();
                enemyArea.enemy = Resources.Load(GameController._instance.GetEnemyInfo(enemyPositionDataList[i].EnemyID).Name) as GameObject;
                enemyArea.count = enemyPositionDataList[i].EnemeyCount;
                enemyArea.postion = new Vector2(enemyPositionDataList[i].LeftUpPosition.x, enemyPositionDataList[i].LeftUpPosition.z);
                enemyArea.width = enemyPositionDataList[i].Width;
                enemyArea.height = enemyPositionDataList[i].Height;
                enemyArea.enemy.GetComponent<EnemyController>().InitEnemy(enemyPositionDataList[i].EnemyID, enemyPositionDataList[i].EnemyLevel);
                enemyArea.enemyList = new List<GameObject>();
                this.enemyAreaList.Add(enemyArea);
            }
        }
        GameObject[] boss = GameObject.FindGameObjectsWithTag(Tags.boss);

        for (int i = 0; i < boss.Length; i++)
        {
            bossList.Add(boss[i]);
        }

        #endregion

        UpdateSence();
    }
Пример #4
0
    void ResetData(SquadronMemberStruct data)
    {
        EnemyStruct enemyStruct = SystemManager.Instance.EnemyTable.GetEnemy(data.EnemyID);

        CurrentHP       = MaxHP = enemyStruct.MaxHP;                                 // CurrentHP까지 다시 입력
        Damage          = enemyStruct.Damage;                                        // 총알 데미지
        crashDamage     = enemyStruct.CrashDamage;                                   // 충돌 데미지
        BulletSpeed     = enemyStruct.BulletSpeed;                                   // 총알 속도
        FireRemainCount = enemyStruct.FireRemainCount;                               // 발사할 총알 갯수
        GamePoint       = enemyStruct.GamePoint;                                     // 파괴시 얻을 점수

        AppearPoint    = new Vector3(data.AppearPointX, data.AppearPointY, 0);       // 입장시 도착 위치
        DisappearPoint = new Vector3(data.DisappearPointX, data.DisappearPointY, 0); // 퇴장시 목표 위치

        ItemDropRate = enemyStruct.ItemDropRate;                                     // 아이템 생성 확률
        ItemDropID   = enemyStruct.ItemDropID;                                       // 아이템 Drop 테이블 참조 인덱스

        CurrentState         = State.Ready;
        LastActionUpdateTime = Time.time;
        //
        isDead = false;      // Enemy는 재사용되므로 초기화시켜줘야 함
    }
Пример #5
0
        //NOT WORKING YET
        public void MoveIJob()
        {
            //create all native containers and populate
            List <AEnemy>             active  = spawn.GetActiveFromPools();
            NativeArray <Vector3>     pos     = new NativeArray <Vector3>(active.Count, Allocator.TempJob);
            NativeArray <Quaternion>  rot     = new NativeArray <Quaternion>(active.Count, Allocator.TempJob);
            NativeArray <EnemyStruct> enemies = new NativeArray <EnemyStruct>(active.Count, Allocator.TempJob);

            for (int i = 0; i < enemies.Length; i++)
            {
                enemies[i] = new EnemyStruct(active[i]);
            }

            //create job, pass in native containers
            EnemyMovement em = new EnemyMovement
            {
                e              = enemies,
                finalPos       = pos,
                finalRot       = rot,
                fixedDeltaTime = Time.fixedDeltaTime
            };

            //schedule, sending amount to each thread...
            JobHandle handle = em.Schedule(active.Count, 1);

            handle.Complete();

            //update original values
            for (int i = 0; i < active.Count; i++)
            {
                active[i].transform.position = pos[i];
                active[i].transform.rotation = rot[i];
            }

            //dispose of native containers
            pos.Dispose();
            rot.Dispose();
            enemies.Dispose();
        }
Пример #6
0
    public void GetEnemy()
	{
        enemy = GameManager.me.enemies[Random.Range(0, GameManager.me.enemies.Count)];
	}
Пример #7
0
    /// <summary>
    /// 攻撃判断用、位置は敵の活動範囲内にいるかとか
    /// </summary>
    /// <param name="enemyStruct">敵の生成区域情報</param>
    /// <param name="position">判定点</param>
    /// <returns>いる時は、Trueを返す</returns>
    public bool isInArea(EnemyStruct enemyStruct, Vector3 position)
    {
        EnemyController enemyController = enemyStruct.enemy.GetComponent<EnemyController>();
        if (enemyStruct.postion.x - enemyStruct.width * 0.5 - enemyController.attackDis - enemyController.followDis - playerstate.GetAttackDis() < position.x &&
            enemyStruct.postion.x + enemyStruct.width * 0.5 + enemyController.attackDis + enemyController.followDis + playerstate.GetAttackDis() > position.x &&
            enemyStruct.postion.y + enemyStruct.height * 0.5 + enemyController.attackDis + enemyController.followDis + playerstate.GetAttackDis() > position.z &&
            enemyStruct.postion.y - enemyStruct.height * 0.5 - enemyController.attackDis - enemyController.followDis - playerstate.GetAttackDis() < position.z
        )
        {
            return true;
        }
        else
        {

            return false;
        }

    }
Пример #8
0
 public void makeEnemyAttackPlayer(Vector3 position, int width, int height, int count, GameObject prefab)
 {
     EnemyStruct Estruct = new EnemyStruct();
     Estruct.count = count;
     Estruct.enemy = prefab;
     Estruct.height = height;
     Estruct.width = width;
     Estruct.postion = position;
     Estruct.enemyList = new List<GameObject>();
     for (int j = 0; j < Estruct.count; j++)
     {
         GameObject gameObject = MakeEnemey(prefab, position, width, height);
         gameObject.GetComponent<EnemyController>().Lock();
         gameObject.transform.LookAt(GameObject.FindGameObjectWithTag(Tags.player).transform.position);
         Estruct.enemyList.Add(gameObject);
     }
     managedEnemyList.Add(Estruct);
 }