
敵に対して攻撃できるようになりました。
攻撃するとコインに変わるので拾うとcoinが増えます。
ただ、作り方で問題が。Raycastしないで配列でやってるんですが、敵を攻撃とかコインを拾う場合、対象のGameObjectを特定する必要があります。
Raycast飛ばせないので、座標からすべてのGameObjectをループで調べるのもアホみたいだし。
とりあえず、GameObjectの二次元配列にポインターを保存しておいて、座標からすぐ引けるようにしました。
これってどうなんだろう? raycastの方がいいのかなあ? 悩むなあ。
敵のターンで移動後にターンをプレイヤーに戻すんですが、敵が複数いる場合は
すべての敵が移動するまでターンは移せないので、どうやって監視するかな?
と考えて、2D RogueLikeのソースを確認すると、GameManagerからループ回してました。
なので、真似して以下の様な感じに。
changeLightFloor()は、ターンが変わるごとに床が光る色を変える処理。
IEnumerator MoveEnemies()
{
yield return new WaitForSeconds(turnDelay);
if (enemies.Count == 0)
{
yield return new WaitForSeconds(turnDelay);
}
for (int i = 0; i < enemies.Count; i++)
{
if( enemies[i]==null ) continue;
nEnemy tmp = enemies[i].GetComponent<nEnemy>();
tmp.EnemyMove ();
yield return new WaitForSeconds(tmp.moveTime);
}
turn = true;
isMove=false;
changeLightFloor();
}