素人Unity練習帳
前回の続き
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