敵に対して攻撃できるようになりました。
攻撃するとコインに変わるので拾うと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(); }