TileMap
TileMapとは
https://gyazo.com/a6b257b13fc429a2944ed568f4910da4
TileMap
Sprite
StaticBody2D
CollisionShape
N個 ...
プラットフォーマーの場合、StaticBody2D + CollisionShape を持ったSpriteを
複数まとめた親NodeがTileMapということになる。
TileSet
TileMapで使うためのチップセット
TileMapで使うための (Sprite > StaticBody2D > CollisionShape) のテンプレートNodeをまとめたもの
通常のSceneと作成して、
メニュー > Scene > Convert To > TileSet
で作成する
Levelsフォルダに保存しておくと良いかも
3D版はMeshLibraly
TileSet 自作編
1. 新規Node > 2DNode
2. res://GFX/Environmentから、ground_*.png を全部シーンにドロップ
テクスチャがドロップされると、Spriteが自動で作られる
3. 見やすいように並べる
4. Sprite > StaticBody2D > CollisionPolygon2D となるようにNodeを作る
CollisionPolygon2D
このNodeを選択して、scene上に点を打っていき最後に閉じれば、Polygon(任意の多角形shape)になる
PoolVector2Arr というオブジェクトで管理される(x, y の集合)
x1, y1
x2, y2
...
xn, yn
https://gyazo.com/21944b48acaf42ba2706df19b7e947ff
CollisionPolygon2Dを選択していると、画面上部にVectorの操作に便利なアイコンが出てくる
ビュー > グリッドを表示 でマス目をつけるのもよし
CollisionPolygon2D vs CollisionShape2D
Polygon
不定形、イレギュラー
規格的な形ではない
点 -> 点 -> ... でエッジを作って、それがpolygonとなる
Shape
定形、レギュラー
Primitive
elipse
rectangle
circle
line
多分、処理速度はこっちのほうが速い
組み合わせることもできる(多分)
グリッドスナップを使う
スナップを使いつつ
グリッドのステップを調整することで、大雑把にポリゴンを作ったり、
マス目に沿ったNodeのTransform指定ができる
磁石マークの横の3点 > スナップ設定
https://gyazo.com/f6b496ec99cf84078efe17f2607c3a89
StaticBodyを複製する
実は、アセットの足場画像は
大
小
の2種類で、柄が違うだけの同じ形
なので、StaticBody2D 以下は複製して使い回せる。
ただし、別Nodeの子要素にしてもTransform.Positionだけ引き継がれるので、Resetする
https://gyazo.com/6954daf93dcb5d2c7b391dd09dd04ffb
TileMapを作る
TileSetができたら、あとはLevel Sceneで
TileMap Nodeを追加して、インスペクタ > Tile Set > 読み込み
作ったタイルセットをグリッドに沿って配置していく
https://gyazo.com/12abc8ae95dfa9e546d8137d23f3a905
TileMap Nodeを選択していると、タイルマップ編集モードになる
左クリック : タイル配置
右クリック : タイル削除
cmd + B : 矩形選択モード
選択したら以下のコマンドが使える
cmd + X : カット
cmd + backspace : デリート
cmd + C : コピー
重要なポイントとして、タイルの配置判定は、グリッドのクリックした部分にあるということ
見た目のSprite、物理判定のStaticBody + CollisionPolygon はグリッドの基準点から
広がっているだけ
なので、削除するときは作成時にクリックしたところと同じところをクリックする。