// 移動する public bool Move(Vector2Int pos, int power) { // 移動可能でなければ処理しない if (!moveObject.CanMove()) { // 移動失敗 return(false); } // アドレスの住所順は上下がUnityとさかさまなのでひっくり返す var address = new Vector2Int(pos.x, -pos.y); // 移動を試みる var result = FieldManager.MoveBlock(Position, Position + address, power); // 結果から処理を変える switch (result) { // 成功した case FieldManager.MoveInfo.SUCCESS: // 空間上のブロックを移動させる moveObject.Move(pos); // アドレスを変更する Position += address; // 移動成功 return(true); // 移動先にブロックがあった case FieldManager.MoveInfo.USED: // TODO:衝突音を鳴らす // 移動失敗 return(false); // フィールドの外だった case FieldManager.MoveInfo.OUTSIDE: // TODO:無効時の効果音を鳴らす // 移動失敗 return(false); } // 理由は不明だが移動には失敗している return(false); }