コード例 #1
0
ファイル: AI2.cs プロジェクト: 84110/BattleArms
    // private bool isGround = false;

    //ゲーム開始時に一度
    void Start()
    {
        hp_manager_ = GetComponent<HPManager>();
        enemy_stater_ = GetComponent<EnemyStater>();

        //Playerオブジェクトを検索し、参照を代入
        player = GameObject.FindGameObjectWithTag("Player").transform;
        distance_state = DISTANCE_STATE.LONG;
        attack_state = ATTACK_STATE.WAIT;
    }
コード例 #2
0
ファイル: AI2.cs プロジェクト: chocomellon/BattleArms
    //毎フレームに一度
    void Update()
    {
        if (!hp_manager_.isActive) return;
        if (!enemy_stater_.isNormal) return;

        if (server_stage_manager_ == null)
        {
            server_stage_manager_ = FindObjectOfType<ServerStageManager>();
        }
        if (server_stage_manager_ == null) return;
        if (server_stage_manager_.IsEndTutorial) return;

        Vector3 playerPos = player.position;                 //プレイヤーの位置
        Vector3 direction = playerPos - transform.position; //方向と距離を求める。
        float distance = direction.sqrMagnitude;            //directionから距離要素だけを取り出す。
        direction = direction.normalized;                   //単位化(距離要素を取り除く)
        direction.y = 0f;                                   //後に敵の回転制御に使うためY軸情報を消去。これにより敵が上下を向かなくなる。

        //経過時間を取得
        searchTime += Time.deltaTime;

        if (searchTime >= 1.0f) {
            //最も近かったオブジェクトを取得
            nearObj = serchTag(gameObject, "Player");
            player = nearObj.transform;

            //経過時間を初期化
            searchTime = 0;
        }

        //プレイヤーとの距離を設定
        switch (distance_state)
        {
            case DISTANCE_STATE.SHORT:
                limitDistance = shortlimitDistance;
                break;
            case DISTANCE_STATE.MIDDLE:
                limitDistance = middlelimitDistance;
                break;
            case DISTANCE_STATE.LONG:
                limitDistance = longlimitDistance;
                break;
        }

        //プレイヤーの距離が一定以上でなければ、敵キャラクターはプレイヤーへ近寄ろうとしない
        if (distance >= limitDistance)
        {

            //プレイヤーとの距離が制限値以上なので普通に近づく
            transform.position = transform.position + (direction * speed * Time.deltaTime);

        }
        else if (distance < limitDistance)
        {

            //プレイヤーとの距離が制限値未満(近づき過ぎ)なので、後退する。
            transform.position = transform.position - (direction * speed * Time.deltaTime);
        }

        //プレイヤーの方を向く
        transform.rotation = Quaternion.LookRotation(direction);

        if (timer >= 180)
        {
            int var;
            var = Random.Range(0, 3);
            Debug.Log(var);
            if (var == 0)
            {
                distance_state = DISTANCE_STATE.SHORT;
                Debug.Log("short");
            }
            if (var == 1)
            {
                distance_state = DISTANCE_STATE.MIDDLE;
                Debug.Log("middle");
            }
            if (var == 2)
            {
                distance_state = DISTANCE_STATE.LONG;
                Debug.Log("long");
            }
            timer = 0;
        }

        if (atktimer >= 20)
        {
            int var;
            var = Random.Range(0, 60);
            if (var < 10) { }
            else if (var < 30) { Attack(); }
            else { }
            atktimer = 0;
        }

        timer += 1;
        atktimer += 1;
    }
コード例 #3
0
ファイル: AI2.cs プロジェクト: ooHIROoo/BattleArms
    //毎フレームに一度
    void Update()
    {
        if (enemy_stater_.isMeleed || !hp_manager_.isActive)
        {
            StopAllCoroutines();
            guard = false;
        }

        if (!hp_manager_.isActive) return;
        if (!enemy_stater_.isNormal) return;

        if (server_stage_manager_ == null)
        {
            server_stage_manager_ = FindObjectOfType<ServerStageManager>();
        }
        if (server_stage_manager_ == null) return;
        if (server_stage_manager_.IsEndTutorial) return;

        if (!enter_room_.isEnter) return;

        if (!guard)
        {
            StartCoroutine(Move());
            guard = true;
        }

        Vector3 playerPos = player.position;                 //プレイヤーの位置
        Vector3 direction = playerPos - transform.position; //方向と距離を求める。
        float distance = direction.sqrMagnitude;            //directionから距離要素だけを取り出す。
        direction = direction.normalized;                   //単位化(距離要素を取り除く)
        //direction.y = 0f;                                   //後に敵の回転制御に使うためY軸情報を消去。これにより敵が上下を向かなくなる。

        //経過時間を取得
        searchTime += Time.deltaTime;

        if (searchTime >= 1.0f) {
            //最も近かったオブジェクトを取得
            nearObj = serchTag(gameObject, "Player");
            player = nearObj.transform;

            //経過時間を初期化
            searchTime = 0;
        }

        //プレイヤーとの距離を設定

        switch (distance_state)
        {
            case DISTANCE_STATE.SHORT:
                limitDistance = shortlimitDistance;
                break;
            case DISTANCE_STATE.MIDDLE:
                limitDistance = middlelimitDistance;
                break;
            case DISTANCE_STATE.LONG:
                limitDistance = longlimitDistance;
                break;
        }

        //プレイヤーの方を向く
        transform.rotation = Quaternion.LookRotation(direction);

        if (timer >= 180)
        {
            int var;
            var = UnityEngine.Random.Range(0, 3);
            if (var == 0)
            {
                distance_state = DISTANCE_STATE.SHORT;
            }
            if (var == 1)
            {
                distance_state = DISTANCE_STATE.MIDDLE;
            }
            if (var == 2)
            {
                distance_state = DISTANCE_STATE.LONG;
            }
            timer = 0;
        }

        if (atktimer >= 20)
        {
            int var;
            var = UnityEngine.Random.Range(0, 60);
            if (var < 10) { }
            else if (var < 30)
            {
                Attack();
            }
            else { }
            atktimer = 0;
        }

        timer += 1;
        atktimer += 1;
    }
コード例 #4
0
ファイル: AI2.cs プロジェクト: ooHIROoo/BattleArms
    //ゲーム開始時に一度
    void Start()
    {
        hp_manager_ = GetComponent<HPManager>();
        enemy_stater_ = GetComponent<EnemyStater>();

        //Playerオブジェクトを検索し、参照を代入
        player = GameObject.FindGameObjectWithTag("Player").transform;
        distance_state = DISTANCE_STATE.LONG;
        attack_state = ATTACK_STATE.WAIT;

        right_weapon_ = right_weapon_object_.GetComponentInChildren<Weapon>();
        left_weapon_ = left_weapon_object_.GetComponentInChildren<Weapon>();

        var id = GetComponent<Identificationer>().id;
        var air_frame_parameter = FindObjectOfType<AirFrameParameter>();
        speed = air_frame_parameter.GetMoveSpeed(id);
        JUMP_POWER = air_frame_parameter.GetJumpPower(id);
        BOOST_POWER = air_frame_parameter.GetBoostPower(id);

        foreach (var room in FindObjectsOfType<EnterRoom>())
        {
            if (room.transform.parent.name.GetHashCode() != roomName.GetHashCode()) continue;
            enter_room_ = room;
            Debug.Log(gameObject.name);
        }
    }
コード例 #5
0
ファイル: AI2dayo.cs プロジェクト: chocomellon/MouseGame
 // private bool isGround = false;
 //ゲーム開始時に一度
 void Start()
 {
     //Playerオブジェクトを検索し、参照を代入
     player = GameObject.FindGameObjectWithTag("Player").transform;
     distance_state = DISTANCE_STATE.LONG;
     attack_state = ATTACK_STATE.WAIT;
 }
コード例 #6
0
ファイル: AI3.cs プロジェクト: YagiChanGames/BattleArms
    //毎フレームに一度
    void Update()
    {
        if (!hp_manager_.isActive) return;
        if (!enemy_stater_.isNormal) return;

        Vector3 playerPos = player.position;                 //プレイヤーの位置
        Vector3 direction = playerPos - transform.position; //方向と距離を求める。
        float distance = direction.sqrMagnitude;            //directionから距離要素だけを取り出す。
        direction = direction.normalized;                   //単位化(距離要素を取り除く)
        direction.y = 0f;                                   //後に敵の回転制御に使うためY軸情報を消去。これにより敵が上下を向かなくなる。

        //経過時間を取得
        searchTime += Time.deltaTime;

        if (searchTime >= 1.0f) {
            //最も近かったオブジェクトを取得
            nearObj = serchTag(gameObject, "Player");
            player = nearObj.transform;

            //経過時間を初期化
            searchTime = 0;
        }   

        //プレイヤーとの距離を設定
        switch (distance_state)
        {
            case DISTANCE_STATE.SHORT:
                limitDistance = shortlimitDistance;
                break;
            case DISTANCE_STATE.MIDDLE:
                limitDistance = middlelimitDistance;
                break;
            case DISTANCE_STATE.LONG:
                limitDistance = longlimitDistance;
                break;
        }

        //プレイヤーの距離が一定以上でなければ、敵キャラクターはプレイヤーへ近寄ろうとしない
        if (distance >= limitDistance)
        {

            //プレイヤーとの距離が制限値以上なので普通に近づく
            transform.position = transform.position + (direction * speed * Time.deltaTime);

        }
        else if (distance < limitDistance)
        {

            //プレイヤーとの距離が制限値未満(近づき過ぎ)なので、後退する。
            transform.position = transform.position - (direction * speed * Time.deltaTime);
        }

        //プレイヤーの方を向く
        transform.rotation = Quaternion.LookRotation(direction);

        if (hitnaway == HITNAWAY.HIT)
        {
            distance_state = DISTANCE_STATE.SHORT;
        }
        else if (hitnaway == HITNAWAY.AWAY)
        {
            Attack();
            distance_state = DISTANCE_STATE.LONG;
        }
    }