private bool IsMoveArea() { Vector3 move_pos = transform.position + (new Vector3(moveVector.x, 0.1f, moveVector.z) * MOVE_SPEED); Ray ray = new Ray(move_pos, -Vector3.up); RaycastHit[] hits = Physics.RaycastAll(ray, 20.0f); if (hits.Length != 0) { bool isfloor = false; for (int i = 0; i < hits.Length; i++) { if (hits[i].collider.name.Contains("MapTrout")) { Trout2 trout = hits[i].collider.gameObject.GetComponent <Trout2>(); Manager.PlayerPass(trout); continue; } if (hits[i].collider.name.Contains("Floor")) { isfloor = true; } } if (!isfloor) { PlayAnimation("Stay"); isMove = false; touchPointer.ApproachePointer(); } return(isfloor); } return(false); }
// 復帰 public void ReCreate() { List <TroutData> datalist = GlobalDataManager.GetGlobalData().LoadTroutData(); for (int i = 0; i < datalist.Count; i++) { Trout2 trout = Instantiate(troutObj, Vector3.zero, Quaternion.Euler(0, 0, 0)) as Trout2; trout.ReCreate(datalist[i]); trout.name = "MapTrout"; troutList.Add(trout); } List <EnemyData> enemylist = GlobalDataManager.GetGlobalData().LoadEnemyDataList(); Debug.Log("敵を" + enemylist.Count + "体再出現させます。"); for (int i = 0; i < enemylist.Count; i++) { EnemyField enemy = Instantiate(enemyObj, enemylist[i].Position, Quaternion.Euler(0, 0, 0)) as EnemyField; enemy.Manager = this; enemy.Target = playerOwner.gameObject; enemy.FirstAreaCheck(); enemyList.Add(enemy); } playerOwner.Manager = this; playerOwner.Respawn(); }
// プレイヤーが通った道をマップに表示 public void PlayerPass(Trout2 trout) { if (trout.GetIsPass()) { return; } string category = trout.GetCategory(); if (category.Contains("ROAD")) { trout.PlayerPass(); } if (category.Contains("ROOM")) { category = category.Replace("DOOR", ""); category = category.Replace("CENTER", ""); for (int i = 0; i < troutList.Count; i++) { if (troutList[i].GetCategory().Contains(category)) { troutList[i].PlayerPass(); } } for (int i = 0; i < enemyList.Count; i++) { enemyList[i].MapEnemyActive(trout); } } }
// ステージの作成 public void Create(int size) { Debug.Log("ダンジョンの生成を開始します。"); GlobalDataManager.GetGlobalData().OnReload(); // ここ以外で値の変更はしない DUNGEON_SIZE = size; // 区画の生成 CreateArea(); // ルートの生成 CreateRoute(); // 道の生成 CreateRoad(); // 袋小路の生成 CreateBlindAlley(); // ダンジョンデータ生成後マスの生成 for (int i = 0; i < areaList.Count; i++) { List <TroutData> trout_list = areaList[i].GetTroutDataList(); for (int n = 0; n < trout_list.Count; n++) { troutDataList.Add(trout_list[n]); } } for (int i = 0; i < roadList.Count; i++) { List <TroutData> trout_list = roadList[i].GetTroutDataList(); for (int n = 0; n < trout_list.Count; n++) { troutDataList.Add(trout_list[n]); } } for (int i = 0; i < troutDataList.Count; i++) { troutDataList[i].ID = i; Trout2 trout = Instantiate(troutObj, troutDataList[i].Position, troutDataList[i].Rotation) as Trout2; trout.ReCreate(troutDataList[i]); trout.name = "MapTrout"; GlobalDataManager.GetGlobalData().SaveTroutData(troutDataList[i]); troutList.Add(trout); } for (int i = 0; i < enemyList.Count; i++) { enemyList[i].FirstAreaCheck(); } playerOwner.IsVisiblePlayer(true); playerOwner.ResetSetUpPlayerCamera(); playerOwner.Manager = this; playerOwner.FirstAreaCheck(); Debug.Log("ダンジョンの生成を終了しました。"); }
public void MapEnemyActive(Trout2 trout) { for (int i = 0; i < movePosotionList.Count; i++) { if (trout.GetPosition() == movePosotionList[i]) { mapEnemy.SetActive(true); break; } } }
// 敵が移動できる範囲内にあるマスリスト public List <Vector3> GetEnemyAreaInTroutList(Trout2 trout) { List <Vector3> poslist = new List <Vector3>(); string category = trout.GetCategory(); category = category.Replace("DOOR", ""); category = category.Replace("CENTER", ""); for (int i = 0; i < troutList.Count; i++) { if (troutList[i].GetCategory().Contains(category)) { poslist.Add(troutList[i].GetPosition()); } } return(poslist); }
public void FirstAreaCheck() { Vector3 pos = new Vector3(transform.position.x, transform.position.y + 0.1f, transform.position.z); Ray ray = new Ray(pos, -Vector3.up); RaycastHit[] hits = Physics.RaycastAll(ray, 20.0f); if (hits.Length != 0) { for (int i = 0; i < hits.Length; i++) { if (hits[i].collider.name.Contains("MapTrout")) { Trout2 trout = hits[i].collider.gameObject.GetComponent <Trout2>(); Manager.PlayerPass(trout); } } } }
public void FirstAreaCheck() { Vector3 pos = new Vector3(transform.position.x, transform.position.y + 0.1f, transform.position.z); Ray ray = new Ray(pos, -Vector3.up); RaycastHit[] hits = Physics.RaycastAll(ray, 20.0f); if (hits.Length != 0) { for (int i = 0; i < hits.Length; i++) { if (hits[i].collider.name.Contains("MapTrout")) { Trout2 trout = hits[i].collider.gameObject.GetComponent <Trout2>(); movePosotionList = Manager.GetEnemyAreaInTroutList(trout); } } } Debug.Log("動ける範囲のマスは" + movePosotionList.Count + "マスです。"); }