/// <summary> /// タイル間の座標をキューに追加 /// </summary> /// <param name="queue"></param> /// <param name="monster"></param> /// <param name="bmt1"></param> /// <param name="bmt2"></param> private void EnqueuePosition(Queue <Vector2> queue, BattleMapMonster monster, BattleMapTile bmt1, BattleMapTile bmt2) { float tmpX = bmt2.GameObject.transform.position.x - bmt1.GameObject.transform.position.x; float diffX = tmpX / (float)MOVE_COUNT_PER_TILE; float tmpY = bmt2.GameObject.transform.position.y - bmt1.GameObject.transform.position.y; float diffY = tmpY / (float)MOVE_COUNT_PER_TILE; BattleMapMonsterPositionCalculator calculator = new BattleMapMonsterPositionCalculator(); for (int i = 0; i < MOVE_COUNT_PER_TILE - 1; i++) { float x = bmt1.GameObject.transform.position.x + (diffX * (i + 1)); float y = bmt1.GameObject.transform.position.y + (diffY * (i + 1)); Vector2 pos = calculator.CalculateMonsterPosition(monster, x, y); queue.Enqueue(pos); } // 最後は目的地 Vector2 lastPos = calculator.CalculateMonsterPosition(monster, bmt2); queue.Enqueue(lastPos); }
/// <summary> /// モンスターの位置の調整 /// </summary> /// <param name="bmt"></param> /// <param name="bmm"></param> private void ConditionMonsterPosition(BattleMapTile bmt, BattleMapMonster bmm) { BattleMapMonsterPositionCalculator calculator = new BattleMapMonsterPositionCalculator(); Vector2 position = calculator.CalculateMonsterPosition(bmm, bmt); GameObject monsterGo = bmm.GameObject; monsterGo.transform.position = position; // 傾けた回数だけ傾ける // 一度に傾けるとずれる for (int i = 0; i < holder.BattleMapSetting.TiltCount; i++) { tiltController.Tilt(monsterGo, BattleMapCameraController.TITL_ANGLE); } }