コード例 #1
0
    // 移動する
    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);
    }