うにてぃブログ

主にUnityとC#に関する記事を書いていきます

Jigsaw

【Unity】ジグソーパズルの自動生成 ~7~

ピース間の境界線の描画 ジグソーパズルの絵には境界線があったほうが絵っぽくなるので絵に境界線を追加してみます internal class Border { public readonly Vector2Int Begin; public readonly Vector2Int End; public readonly List<BezierPathSegment> Segments; public Bor</bezierpathsegment>…

【Unity】ジグソーパズルの自動生成 ~6~

生成したピースの Pivot 現状すべてのピースの GameObject を (0, 0, 0) 座標に生成しており頂点をずらすことで並べている そのため、ピースを回転させたりする場合 Pivot が (0, 0, 0) なので Z回転を入れると下図のように意図しない回転になる Pivot 調整 …

【Unity】ジグソーパズルの自動生成 ~5~

テクスチャを貼り付ける ジグソーピースの生成ができたのでこれにテクスチャを貼り付ける そのためには今の頂点座標から、uvを計算してやればよい //uvのセット var uv = new List<Vector2>(); foreach (var vertex in mesh.vertices) uv.Add(new Vector2(vertex.x / </vector2>…

【Unity】ジグソーパズルの自動生成 ~4~

ジグソーの複数分割 ピースの生成はできましたが、最終的には一枚絵からジグソーを作成するため 分割数を指定して、それに応じたピースを生成するようにしていきます ジグソーの境界 隣り合うジグソーの境界は同じものを使う必要がありますが すべてのピース…

【Unity】ジグソーパズルの自動生成 ~3~

ピースの厚み 今回は ~2~で作成したメッシュに厚みをつけるために 生成したMeshの輪郭線のZ座標をずらして複製し、複製した線と元の線の間にポリゴンを作成することで厚みをつけます 背面に関しては、表面の頂点座標を押し出し頂点の順番を反転してやれば作…

【Unity】ジグソーパズルの自動生成 ~2~

ピースの Mesh 生成 ~1~で作成したピースの境界を4つ繋げればピースができる 前回は線を描画するために new PathProperties() を利用していたが、今回は線では無く面を作成するため new SolidFill(), を設定する。 各境界を作成しているのが GetBorder メソ…

【Unity】ジグソーパズルの自動生成 ~1~

ふと Unity でジグソーパズルを作成したくなったので、Unity でのジグソーパズルの自動生成について考える ピース Mesh の生成 まずピースの生成について考える 自前で頂点を作成するのは容易ですが、頂点からメッシュを作成するのは容易では無いため 頂点と…