▽メニュー開く 
3Dアクションゲームを作る

前回の続き

HierarchyのEnemyを選択して、Inspector>AddConponent>NewScript>EnemyMove

今作ったEnemyMove.csをAssets>Scriptsの中に入れる

Enemy.csをダブルクリック

Enemyの行動は

5秒間隔で異なる行動を行い
Playerが、SearchAreaに入ると戦闘行動になる
たまに無作為に攻撃を行う

ランダムに動く方向を決めるには
乱数を出して、その出た数字により、行動を決めればいい

Script//乱数

Random.Range(0,5);//0〜5までのどれかの数字が出る

また、5秒間隔で乱数が発動するようにするには

Script//時間計算
public float waitingBaseTime    = 2.0f;
void Start () {
enemyTime = waitingBaseTime;
}
void Update(){
enemyTime -= Time.deltaTime;

if(enemyTime<=0){
walkMuki = Random.Range(0,5);
enemyTime = waitingBaseTime;
}

}

その出た目に合わせて場合分け

Script//場合分け
walkMuki = Random.Range(0,5);

switch (walkMuki) {
        case 0://プレイヤーの方へ向く
            break;
        case 1://直進
            Debug.Log ("case 1");
            break;
        case 2://正面右30度へ向く
            Debug.Log ("case 2");
            break;
        case 3://正面左30度へ向 く   
            Debug.Log ("case 3");
            break;
        case 4://あとづさり
            Debug.Log ("case 4");
            break;
        case 5://後ろへ進む
            Debug.Log ("case 5");
            break;
        }




でもこれだと、索敵、攻撃、などのもうど切り替えがうまくいかないので

さらに

待機、索敵、攻撃、破壊の4つのモードに切り替えられるようにする

Script//モード切り替え

    public enum State {
        Waiting,   // 待機
        Walking,    //  探索
        Chasing,    //  追跡
        Attacking,    //  攻撃
        Died,       //  死亡
    };

void Update(){}

        switch (enemyState) {
        case State.Waiting:
            Debug.Log  ("待ち");
            waiting ();
            break;
        case State.Walking:
            Debug.Log  ("歩き");
            walking ();
            break;
        case State.Chasing:
            Debug.Log  ("探索");
            chasing ();
            break;
        case State.Attacking:
            Debug.Log  ("攻撃");
            attacking ();
            break;
        case State.Died:
            Debug.Log  ("死");
            died ();
            break;
        }
を追加

関数として

void waiting(){}
void walking(){}
void chasing(){}
void attacking(){}
void died(){}

<追記2016-7-16:足りなかった部分>

※enumは、名前が決まっているものに使うといい


Playerの移動とジャンプ
Enemyの行動変化はできたので

次は、攻撃と当たり判定

攻撃は、叩く、ぶつかる、飛び道具などありますが今回は、
キーを押すと、球が出現しそれをキャラクター前方へ飛ぶ
敵に当たったら、敵キャラが消えるというふうにする


球を作ります

Hierarchy>右クリック>3D Object>Sphere
Inspector>Transform>Position>X0 Y1 Z1
Scale>X0.2 Y0.2 Z0.2
名前をPlayerBullet

色を作る
Materialは、Projectウィンドウで右クリックして作ります
Project>Assets>Materialsのところで右クリック>Create>Material
名前をPlayerBulletColorにする
Inspector>Albedoの右側の白い四角をクリックするとこ運動が出るので色を指定する
とりあえず、青にする

このマテリアルを、PlayerBulletにドラッグして反映させる

同様に敵の弾も作る
名前は、EnemyBulletでマテリアルの名前はEnemyBUlletColorにする





Prefab化していつでも表示できるようにする

Project>Assetsに
Prefabsというフォルダを作る



HierarchyにあるPlayerBulletとEnemyBulletを、ProjectにあるAssets>Prefabsにドラッグして 入れる。
そして、HierarchyにあるPlayerBulletとEnemyBulletを削除



戻る 次へ

運営者画像
Reon Viewin