【Unity道場】使って覚えるTileMap に参加しました
概要
イベント
Unity 2017.2bでUnityEditorに組み込まれたTileMap機能について講義/ハンズオン形式で学ぶイベント。 @tsubaki_t1 さん(テラシュールブログ) が講師を務めてくださり、更にハンズオンということでUnityスタッフが分からない部分を教えてくださる、至れり尽くせりな会でした。
会場
会場の「ベルサール六本木コンファレンスセンター」は「住友不動産六本木グランドタワー」の9階にあります。これまで渋谷のTECH PLAY SHIBUYA (旧dots.) で開催されることが多かったが、六本木の会場になってからは初参加。
着いた!(迷った) #unity道場
— 青木とと(ˊᗜˋ*) (@lycoris102) 2017年8月5日
迷いました。
資料
www.slideshare.net
内容
2D Experimental Preview
Unityにおける新機能は、クオリティ向上やバグを防ぐ目的で、いきなりリリースするのではなく、Experimental Buildという形式でユーザに試してもらうケースが多くなっている。最近 2D Experimental Preview で検証されている内容は以下を参照。
https://forum.unity3d.com/forums/2d-experimental-preview.104/ www.youtube.com
Experimental Buildの段階を経て、次はベータリリースされるが「TileMap」の機能は、先日リリースされた unity2017.2b に含まれている。
TileMapの使い方
おー、Tilemap出来た! #Unity道場 pic.twitter.com/HhGAFfj0d1
— 青木とと(ˊᗜˋ*) (@lycoris102) 2017年8月5日
上記でやっているのは以下の一連の流れ。
- TilePaletteの作成
- Window > TimePalette
- CreateNewPaletteを選択
- TileAssetの作成 (ワークショップでは対応済みだった)
- Textureの設定
- タイルマップに使用したい画像アセットを選択
- TextureTypeをSpriteに変更
- SpriteModeをMultipleに変更
- PixelPerUnitをタイル1枚における一片の長さを指定
- (FilterModeをPointにすると補間が無くなり、ドット感が増す)
- Spriteの設定
- SpriteEditorを開く
- Sliceでタイル毎に画像を分割 (GridByCellSizeを使うと楽)
- Textureの設定
- TilePaletteへの登録
- 先ほど設定したSpriteをTilePaletteウィンドウにドラッグ/ドロップ
- TileAssetをどこに保存するか聞かれるので適当に指定
- TileMapを埋める
- Hierarchy上で 2DObject > TileMapを選択
- 塗りたいTileMapオブジェクトをHierarchy上で選択
- (TileMapオブジェクト自体を複数生成できるため)
- TilePaletteから “ブラシ” (筆のアイコン) を選択
- 塗りたいタイルを選択
- Sceneビュー上のグリッドを選択して塗る
また、塗りたいタイルを回転させる手段は、マシン/バージョンによって微妙に異なるっぽい。正式リリース時のドキュメント化に期待。
TileAssetを選択して塗る際に “[“ で左回転 “]” で右回転できた (Unity2017.2.05b / mac) #unity道場 pic.twitter.com/t5rgKpL28k
— 青木とと(ˊᗜˋ*) (@lycoris102) 2017年8月5日
上記のフローにも記載したが、TileMapオブジェクトを複数用い、Order in Layerを変更することで、レイヤーを扱うことも出来る。
TileMapの上に何かしらのオブジェクトを配置したい場合は同一のTileMap上で処理するのではなく、TileMapをもう1つ生成し、Order in Layerを上げて上位に設置すると良い #Unity道場 pic.twitter.com/e73Ip2VwGC
— 青木とと(ˊᗜˋ*) (@lycoris102) 2017年8月5日
TileMap上にアイテムなどのオブジェクトを設置する際には、Grid以下に置くとGridに沿って移動させることが出来るのでオススメとのこと。
Memo: Grid以下に配置したオブジェクトは、Sceneビュー上ではグリッドに沿って移動/配置させることが出来る #Unity道場 pic.twitter.com/U0Jve4ajXN
— 青木とと(ˊᗜˋ*) (@lycoris102) 2017年8月6日
TileAssetと当たり判定について
TilePaletteにTextureを登録すると生成されるTileAssetをProjectで選択すると色や衝突判定を設定可。ColliderTypeは None(衝突しない) / Grid(マス目に衝突判定) / Sprite(Spriteの設定に準拠) #Unity道場 pic.twitter.com/c4x7HwvtSp
— 青木とと(ˊᗜˋ*) (@lycoris102) 2017年8月6日
Memo: TileAssetのColliderTypeをSpriteにしたときの当たり判定の領域は、SpriteEditor上で変更することができる #Unity道場 pic.twitter.com/M5JoCoGVTZ
— 青木とと(ˊᗜˋ*) (@lycoris102) 2017年8月6日
SpriteMaskと組み合わせると楽しい
SpriteMaskに関してはテラシュールブログ上の記事を参考に。 uGUIのMask機能がMaskコンポーネントを持つGameObjectの子要素に対してMaskが適応されるのに対し、こっちはSpriteRendererにおいてMaskの影響を受けるか/受けないかを設定する感じになった。 これをTileMapと組み合わせて、以下のようなものが作れた。
たーのしー! #Unity道場 pic.twitter.com/q6IjhfAEMj
— 青木とと(ˊᗜˋ*) (@lycoris102) 2017年8月5日
ProgrammableTile / CustomBrush
タイル描画時の挙動を改造することが出来る。今回は用意されたサンプルプロジェクトに付随された、AutoTileを使用した。これは、配置されたタイルの左右/上下のつながりの関係に応じて、どのタイルを利用するかを決めるというもの。 また ProgrammableTile を使えば、ランダムにタイルを配置することも、SpriteAnimationを適応することも可能。 また、CustomBrushを用意することで、TileMapの塗り方にパターンを持たせることが出来る (ランダムに配置したり、直線上に配置したり)。
以下がUnity公式が発表しているProgrammableTileのサンプルおよびサンプルプロジェクト。
今回の会について
上記の @RyotaMurohoshi さんの記事でも触れられている通り、1度説明後に講師の方を真似して一緒に作業するフロー/質問しやすい環境で、とても理解が進む会でした (MakerFaire/デザフェスと日程が被ったこともあり、あまり人数は多くなかった感じでしたが、ワークショップ形式であることを考えたらちょうど良い人数だったかも)
タイルマップ使って何か作ってみたいところではあるのですが、タイルマップの弱点は素材が整わないと何も出来ないというところ… 何かフリーの素材漁ってみようと思います。
参加者のみなさん、講師の椿さん、ユニティスタッフのみなさん、ありがとうございましたー! (あと個人的にですが、椿さんに1週間ゲームジャムの実況ありがとうございました!ってお伝えすることができて良かった….)
Unity1週間ゲームジャム(2017/07/24〜)に参加しました
Unity1週間ゲームジャムとは?
- @naichilab さんの運営する unityroom というサイトで開催されたイベント
- 1週間でお題に沿ったUnity製のゲームを製作する
- 4回目である今回の課題は「夏」
成果物
夏の花火 彗星の夜 | 無料ゲーム投稿サイト unityroom - Unityのゲームをアップロードして公開しよう
こんな感じのゲームですー! | 夏の花火 彗星の夜 | ゲーム投稿サイト unityroom #unity1week https://t.co/ZnGOfwB1ig pic.twitter.com/DfkfvUd9PH
— 青木とと(ˊ~ˋ*) (@lycoris102) 2017年7月30日
使用アセット
着想
今回のテーマは夏ということで、割と具体的なモチーフが求められるお題でした。
モデリング(まだ)出来ない、イラスト(まだ)出来ないな自分にとっては結構ハードル高く、花火はその中で何とか自分が出来ること (エフェクト/パーティクル) の中で一番マシな感じになるだろうということで採択されました。
システムは全く未定ですが、元気があれば花火のゲーム作ります #unity1week pic.twitter.com/bnGytmOrQt
— 青木とと(ˊ~ˋ*) (@lycoris102) 2017年7月23日
花火作るぞ!とデザインを固めた時点ではまだどういうゲームシステムにするかは決まってなく、花火の遅延して発火する特性が活きる「引っ張りゲー」か「音ゲー」で悩んでいました。正直この両者で「引っ張りゲー」を採択したのは何となくではあります (1週間ゲームジャムの初回で音っぽいやつを作ったので、傾向変えようと思ったのかもしれない)
仕様
コントラスト
www.slideshare.net
今回はコントラストを意識するよう心がけました。 今ひとつな部分もありつつ、今後も意識したいことではあります
- 画面の色彩のコントラスト
- 黒背景と白い花火 / 補助線 / ターゲットサークル
- ブルームによる強調 (Post Processing Stack)
- リスクとリターンのコントラスト
- 貯めると当たりやすく範囲も広がるが、連発できない
- チャレンジ/難易度のコントラスト
- Wave6~8で学習させる (色々なパターンを見せる)
- Wave9は難易度を下げる (単調だけど気持ちいい/クライマックスに向かう)
- Wave10はラスボス (やりごたえがある/これまでの学習を活かす)
アップグレードシステム
Downwellプレイしたときから、ずっとどこかでやりたいなぁと思っていました! 徐々に強くなっていく感じが出せ、自分の個性が出せる用にカスタマイズできる素晴らしいシステムです。正直これがやりたくて、Wave制に倒したところはあります。
昼休み作業 / どこを目指しているのか… #unity1week pic.twitter.com/PzaDOmF0op
— 青木とと(ˊ~ˋ*) (@lycoris102) 2017年7月26日
ただ中身はもう少し精査したかった...。特にランダム制の高い「親子連れ」「たまや」は画面映えするにも関わらず、そこまで役に立たなかったのが反省点。役に立つような (例えば密度が高い巨大な集合がゆっくり降ってくる) ステージを作ってあげる等、できることはあったはず。
ステージ
各WAVE毎にcsvで管理しています。SpreadSheetで発射時間とスタート座標/ゴール座標、下に行き着くまでの時間を設定し、出力したものを使用しています。DOTweenで移動/大きさ/透過度を制御し、遠くから近くに落ちてくる雰囲気を出しています。遠くから来ている感じはEasingにより徐々に加速する要素でも表現したのですが、そのせいでかなり簡単なステージが出来てしまったのが反省点。
進行
今回の作業時間は15時間程でした。会社に着いてから定時までの時間、お昼休み、帰宅後 + 土曜日で作業しました。前回よりは作業時間は確保できた...はず。
タイトル/世界観
夏といえば終焉モノですね!ね! 結構明るい題材が増えそうだったので、少し暗め/切ないトーンに倒してみました。 また、右上のポエムは、ステージが進行していることを分かりやすくするために取ってつけたものでした。あまり読む暇無かったかもしれない (コメント等であまり触れられてない要素)。
タイトルに関しては「彗星花火」という仮名を置いていたのですが、これだとただの漢字の集合として埋もれてしまう可能性があったので肉付けしまして、今まであまり出てなさそうなところ (文学/ラノベっぽさ) を狙いました。あまり詳しくないけど「イリヤの空、UFOの夏」っぽい 。
感想貰った!
開発者さんに評価いただくのめちゃくちゃ嬉しいですね...
ととさんは毎回良い感じの物を作って凄い >>夏の花火 彗星の夜 | ゲーム投稿サイト unityroom #unity1week https://t.co/lN7TOkDraV
— オークマネコ@デジゲー博 B-22b (@ookumaneko_XD) 2017年7月30日
たった1週間でこんないい雰囲気にできちゃうんですか...
— yukidaruma (@yukidaruma_app) 2017年7月30日
夏の花火 彗星の夜 | ゲーム投稿サイト unityroom #unity1week https://t.co/k8eYLi2C1R
夏の花火 彗星の夜 | ゲーム投稿サイト unityroom #unity1week https://t.co/GeLZa5WaTw
— 浦城洋 (@Hiroshi_ura_ki) 2017年7月30日
儚い雰囲気な花火のミサイルコマンド風ゲーム
バナー広告にマウスが入るとドラッグが固まっちゃうのよね
『夏の花火 彗星の夜』、安定のクオリティ。すごいよくできてる。花火で隕石を迎撃するというもので、花火の発動までタイムラグがあるからだいぶ手前に配置するのがコツかな。成長要素もあったりやりこめそう #unity1week感想
— パン@アプリ開発マン (@pann_burukuri) 2017年7月31日
夏の花火 彗星の夜 | ゲーム投稿サイト unityroom #unity1week https://t.co/bYwtgEzbTV
— たなかゆう (@am1tanaka) 2017年7月31日
開発中から楽しみにしていた作品。遊んでみると期待以上の完成度。ここまでのレベルだと音が無くても気にならないというかそれも演出に見えてしまう
これはヤバいくらい素晴らしいですね…。
— ねこバタ会議@RogueBlood制作中 (@nekobata_kaigi) 2017年8月1日
夏の花火 彗星の夜 | ゲーム投稿サイト unityroom #unity1week https://t.co/iGRIB5AgFP
見た目が素晴らしい!いい雰囲気!Waveの最初からなのが少しめんどくさかった。 夏の花火 彗星の夜 | ゲーム投稿サイト unityroom #unity1week https://t.co/AxLatQnj4L
— アロン (@at_aron_games) 2017年8月2日
また、憧れのUnityTechnologiesJapanの皆さま(ntnyさん/椿さん/そめ先生)にプレイしていただきました! クリアまでしていただき、めちゃくちゃ嬉しかったですー!
頑張りましょう
- レベルデザイン
- 常に動いているものを置く
- 今回でいえばうっすら雲掛ければ良かったなぁと
- 音(毎度間に合わない...)
- 新しいチャレンジ
次回の参加
今回で4回目の参加となります。なんとか今のところ皆勤賞です (そんなに多くないかしら...? )
ここまでの参加ですが、割と「出来ること」しかやっていないのが心残りです。安定感を評価していただけて、ブランディング出来ているといえば出来ているのですが、逆にいえば新しいチャレンジが出来ていないというところでもあります。なので、次回やるなら最低1つは新しい要素は組み込みたいし、過去作とに過ぎないようにしたいと思っています。例えば3Dゲーム作る。Shader触る。Meshの頂点いじくる。
この記事ではざっくり感想を書きましたが - UI周りにブルーム(Grow)どういう風に掛けているのか知りたい - 制作フローや実装について というお話も頂けたので、この感想エントリとは別途時間を見つけて記載しようと思います。
今回も @naichiさん、参加者の皆さん、ありがとうございました!良い夏を!
ストレングスファインダー結果
さあ、才能(じぶん)に目覚めよう 新版 ストレングス・ファインダー2.0
- 作者: トム・ラス,古屋博子
- 出版社/メーカー: 日本経済新聞出版社
- 発売日: 2017/04/13
- メディア: 単行本
- この商品を含むブログ (2件) を見る
- 2016年(去年)の頭に受けたストレングスファインダーの結果
- 見返したいケースが増えて来たので載せておく
最上志向
優秀であること、平均ではなく。これがあなたの基準です。平均以下の何かを平均より少し上に引き上げるには大変な努力を要し、あなたはそこに全く意味を見出しません。平均以上の何かを最高のものに高めるのも、同じように多大な努力を必要としますが、はるかに胸躍ります。自分自身のものか他の人のものかに関わらず、強みはあなたを魅了します。真珠を追い求めるダイバーのように、あなたは強みを示す明らかな徴候を探し求めます。生まれついての優秀さ、飲み込みの速さ、一気に上達した技能――これらがわずかでも見えることは、強みがあるかもしれないことを示す手がかりになります。そして一旦強みを発見すると、あなたはそれを伸ばし、磨きをかけ、優秀さへ高めずにはいられません。あなたは真珠を光り輝くまで磨くのです。このように、この自然に長所を見分ける力は、他の人から人を区別していると見られるかもしれません。あなたはあなたの強みを高く評価してくれる人たちと一緒に過ごすことを選びます。同じように、自分の強みを発見しそれを伸ばしてきたと思われる人たちに惹かれます。あなたは、あなたを型にはめて、弱点を克服させようとする人々を避ける傾向があります。あなたは自分の弱みを嘆きながら人生を送りたくありません。それよりも、持って生まれた天賦の才能を最大限に利用したいと考えます。その方が楽しく、実りも多いのです。そして意外なことに、その方がもっと大変なのです。
収集心
あなたは知りたがり屋です。あなたは物を収集します。あなたが収集するのは情報――言葉、事実、書籍、引用文――かもしれません。あるいは形のあるもの、例えば切手、野球カード、ぬいぐるみ、包装紙などかもしれません。集めるものが何であれ、あなたはそれに興味を惹かれるから集めるのです。そしてあなたのような考え方の人は、いろいろなものに好奇心を覚えるのです。世界は限りなく変化に富んでいて複雑なので、とても刺激的です。もしあなたが読書家だとしたら、それは必ずしもあなたの理論に磨きをかけるためではなく、むしろあなたの蓄積された情報を充実させるためです。もし旅行が好きだとしたら、それは初めて訪れる場所それぞれが、独特な文明の産物や事柄を見せてくれるからです。これらは手に入れた後、保管しておくことができます。なぜそれらは保管する価値があるのでしょうか? 保管する時点では、何時または何故あなたがそれらを必要とするかを正確に言うのは難しい場合が多いでしょう。でも、それがいつか役に立つようになるかどうか誰が知っているというのでしょう。あらゆる利用の可能性を考えているあなたは、モノを捨てることに不安を感じます。ですから、あなたは物や情報を手に入れ、集め、整理して保管し続けます。それが面白いのです。それがあなたの心を常に生き生きとさせるのです。そしておそらくある日、その中に役に立つものが出てくることでしょう。
未来志向
「もし・・・だったら、どんなに素晴らしいだろうなぁ」と、あなたは水平線の向こうを目を細めてみつめることを愛するタイプの人です。未来はあなたを魅了します。まるで壁に投影された映像のように、あなたには未来に待ち受けているかもしれないものが細かいところまでみえます。この細かく描かれた情景は、あなたを明日という未来に引き寄せ続けます。この情景の具体的な内容―より品質の高い製品、より優れたチーム、よりよい生活、あるいはよりよい世界―は、あなたの他の資質や興味によって決まりますが、それはいつでもあなたを鼓舞するでしょう。あなたは、未来に何ができるかというビジョンがみえ、それを心に抱き続ける夢想家です。現在があまりにも失望感をもたらし、周囲の人々があまりにも現実的であることがわかった時、あなたは未来のビジョンをたちまち目の前に呼び起こします。それがあなたにエネルギーを与えてくれます。それは、ほかの人にもエネルギーを与えます。事実、あなたが未来のビジョンを目に浮かぶように話すのを、人々はいつでも期待しています。彼らは自分たちの視野を広げ、精神を高揚させることができる絵を求めています。あなたは彼らのためにその絵を描くことができます。練習しましょう。言葉を慎重に選びましょう。できる限りその絵をいきいきと描きましょう。人々はあなたが運んでくる希望に飛びつきたくなるでしょう。
戦略性
戦略性という資質によって、あなたはいろいろなものが乱雑にある中から、最終の目的に合った最善の道筋を発見することができます。これは学習できるスキルではありません。これは特異な考え方であり、物事に対する特殊な見方です。他の人には単に複雑さとしか見えない時でも、あなたにはこの資質によってパターンが見えます。これらを意識して、あなたはあらゆる選択肢のシナリオの最後まで想像し、常に「こうなったらどうなる? では、こうなったらどうなる?」と自問します。このような繰り返しによって、先を読むことができるのです。そして、あなたは起こる可能性のある障害の危険性を正確に予測することができます。それぞれの道筋の先にある状況が解かることで、あなたは道筋を選び始めます。行き止まりの道をあなたは切り捨てます。まともに抵抗を受ける道を排除します。混乱に巻き込まれる道を捨て去ります。そして、選ばれた道――すなわちあなたの戦略――にたどり着くまで、あなたは選択と切り捨てを繰り返します。そしてこの戦略を武器として先へ進みます。これが、あなたの戦略性という資質の役割です:問いかけ、選抜し、行動するのです。
着想
あなたは着想に魅力を感じます。では、着想とは何でしょうか? 着想とは、ほとんどの出来事を最もうまく説明できる考え方です。あなたは複雑に見える表面の下に、なぜ物事はそうなっているかを説明する、的確で簡潔な考え方を発見すると嬉しくなります。着想とは結びつきです。あなたのような考え方を持つ人は、いつも結びつきを探しています。見た目には共通点のない現象が、何となく繋がりがありそうだと、あなたは好奇心をかき立てられるのです。着想とは、皆がなかなか解決できずにいる日常的な問題に対して、新しい見方をすることです。あなたは誰でも知っている世の中の事柄を取り上げ、それをひっくり返すことに非常に喜びを感じます。それによって人々は、その事柄を、変わっているけれど意外な角度から眺めることができます。あなたはこのような着想すべてが大好きです。なぜなら、それらは深い意味があるからです。なぜなら、それらは目新しいからです。それらは明瞭であり、逆説的であり、奇抜だからです。これらすべての理由で、あなたは新しい着想が生まれるたびに、エネルギーが電流のように走ります。他の人たちはあなたのことを、創造的とか独創的とか、あるいは概念的とか、知的とさえ名付けるかもしれません。おそらく、どれもあてはまるかもしれません。どれもあてはまらないかもしれません。確実なのは、着想はあなたにとってスリルがあるということです。そしてほとんど毎日そうであれば、あなたは幸せなのです。