예제 #1
0
    void Start()
    {
        enemyCollector = GameObject.FindGameObjectWithTag("GameController").GetComponent <EnemyDataCollector>();

        sigma = enemyCollector.sigmaValue;
        //체력 관리
        //enemyController.enemyStat.__PUB__Health_Point = 4;


        moveSpeed = enemyStat.__PUB_Move_Speed;
        rotSpeed  = enemyStat.__PUB_Rotation_Speed;

        //이동에 관한 함수 리스트
        //이동 없음
        behaveList_Move.Add(() => AI_DO_Nothing());
        //전방이동
        behaveList_Move.Add(() => _enemyAIEngine._unitBaseEngine._unit_Move_Engine.Move_OBJ(moveSpeed, ref enemyController.enemyTransform, 1));
        //후방이동
        behaveList_Move.Add(() => _enemyAIEngine._unitBaseEngine._unit_Move_Engine.Move_OBJ(moveSpeed, ref enemyController.enemyTransform, -1));

        //회전에 관한 함수 리스트
        //회전 없음
        behaveList_Rotate.Add(() => AI_DO_Nothing());
        //시계방향 회전
        behaveList_Rotate.Add(() => _enemyAIEngine._unitBaseEngine._unit_Move_Engine.Rotate_OBJ(rotSpeed, ref enemyController.enemyTransform, 1));
        //반시계방향 회전
        behaveList_Rotate.Add(() => _enemyAIEngine._unitBaseEngine._unit_Move_Engine.Rotate_OBJ(rotSpeed, ref enemyController.enemyTransform, -1));
        //플레이어를 정면으로 바라볼 때까지 회전
        behaveList_Rotate.Add(() => _enemyAIEngine.Rotate_TO_Direction(rotSpeed, ref enemyController.enemyTransform, enemyController.playerTransform, false));
        //플레이어를 우측으로 바라볼 때까지 회전
        behaveList_Rotate.Add(() => _enemyAIEngine.Rotate_TO_Direction(rotSpeed, ref enemyController.enemyTransform, enemyController.playerTransform, false, enemyController.enemy_Right));
        //플레이어를 좌측으로 바라볼 때까지 회전
        behaveList_Rotate.Add(() => _enemyAIEngine.Rotate_TO_Direction(rotSpeed, ref enemyController.enemyTransform, enemyController.playerTransform, false, enemyController.enemy_Left));
        //플레이어 반대 방향 바라볼 때까지 회전
        behaveList_Rotate.Add(() => _enemyAIEngine.Rotate_TO_Direction(rotSpeed, ref enemyController.enemyTransform, enemyController.playerTransform, true));

        //공격에 관한 함수 리스트
        //공격 없음
        behaveList_Attack.Add(() => AI_DO_Nothing());
        //정면 일반 공격
        behaveList_Attack.Add(() => _enemyAIEngine.Attack_Default(2.0f, ref enemyController.enemy_Front, enemyStat, 1));
        //우측 일반 공격(2번, angleComp > 0)
        behaveList_Attack.Add(() => _enemyAIEngine.Attack_Default(2.0f, ref enemyController.enemy_Right, enemyStat, 1));
        //좌측 일반 공격(3번, angleComp < 0)
        behaveList_Attack.Add(() => _enemyAIEngine.Attack_Default(2.0f, ref enemyController.enemy_Left, enemyStat, 1));

        realIndex.InitIntVector3(0, 0, 0);


        beforeBehaveID = "NULL";

        try
        { beforeDist = Vector3.Distance(transform.position, enemyController.playerTransform.position); }
        catch (System.Exception)
        {}
        beforeAngleComp = enemyController.GET_enemyAIEngine.angleComp;
        beforeVec2      = new Vector2(transform.position.x, transform.position.z);
    }