テラシュールブログ

旧テラシュールウェアブログUnity記事。主にUnityのTipsやAR・VR、ニコニコ動画についてのメモを残します。

【Unity】Unite 2017 Tokyo の資料が逐次公開されてる模様

f:id:tsubaki_t1:20170508224301j:plain

Unity 2017 Tokyoで使用された資料が逐次公開されはじめています。
タイムテーブルから取得出来ます。

events.unity3d.jp

 

デモがベースで資料だけ見てもナンノコッチャという物もあるかもしれませんが、割と良い感じです。

ただまぁ、タイトル画像が全て一緒なのは、若干見栄えが悪い感も無きにしもあらず。

 

中には「「魔法使いプリキュア!」EDでのUnity映像表現の詳細解説」のような、資料・動画非公開の物もあります。

現地で見れた人はラッキーという事で。

個人的にお気に入り資料(随時更新)

www.slideshare.net

www.slideshare.net

www.slideshare.net

www.slideshare.net

www.slideshare.net

www.slideshare.net

www.slideshare.net

www.slideshare.net

【Unity】Calling Animator.MatchTarget while in transition does not have any effect. という警告

f:id:tsubaki_t1:20170506000418g:plain

ちょっとハマったので一応メモ。
時間がないので簡単に。

ノードの遷移中にMatchTarget は使えない

Match Targetを使ってデモを作ってる最中、このエラーが出てきました。

Calling Animator.MatchTarget while in transition does not have any effect.

f:id:tsubaki_t1:20170506000517j:plain

書いてある通りで、MatchTargetはノードの遷移中には効果がないとの事です。

別にワーニングですし欲しい挙動は動いては居るので問題が無いといえば無いですが、ワーニングのパフォーマンスと精神衛生上消した方が良さそうなので、消します。

遷移中の処理をスキップする

面倒なので、animator.IsInTransition(layerIndex)でサクっと消します。

f:id:tsubaki_t1:20170506000821j:plain

関連

tsubakit1.hateblo.jp

【Unity】Unity 2017の新しいスプライトをパッキングする仕組み、”SpriteAtlas”について

f:id:tsubaki_t1:20170504233638j:plain

Unity 2017でSpritepackerの仕組みが新しくなったみたいです。

新しいパッキングの仕組み、SpriteAtlas

Unity 2017でSpriteをパッキングする仕組みが新しくなりました。

機能はSprite Atlasという名前で、ファイルベースで参照アセットを準備し、運用するタイプになるみたいです。

f:id:tsubaki_t1:20170505002218j:plain

パッキングの単位はフォルダ・テクスチャ・スプライト

以前のSpritePackerはテクスチャにPacking Tagを指定してパッキングする方法でした。

新しいパッキングのシステムでは、Object for packingの項目に登録したい項目を指定する事で、その項目をまとめてパッキングしてくれるみたいです。

パックできる単位は以下の項目。

  • フォルダ
  • テクスチャ(に含まれてるSprite)
  • Sprite単体

例えば下のアニメーションでは、2Dフォルダを指定することで、2Dフォルダ以下の全てのスプライトがパッキングされます。

f:id:tsubaki_t1:20170504233739g:plain

ちなみに、複数のSpriteAtlasから単一のSpriteを指定する事も出来ます。この場合、自動でSpriteをロードした場合、どのAtlasから参照されるのかは微妙です。

圧縮フォーマットはSpriteAtlasで一括指定

この機能では、圧縮する設定はAtlas単位で行います。
要するに、圧縮フォーマットが異なっていても再圧縮されます。

f:id:tsubaki_t1:20170504234257j:plain

SpritePackerはLegacy扱い

Legacyの項目を設定すると旧SpritePackerが使用されます。

Legacyではない項目を使用すると、Packing Tagはガン無視されます。

f:id:tsubaki_t1:20170505001109j:plain

パッキングしたAtlasの運用

以前はパッキングしても特に意識なく使用出来ましたが、SpriteAtlasは意識してコントロール出来るようになったみたいです。

Atlasはファイルとして見える

作成したAtlasはファイルとして確認出来ます。

このプレビューに見えている項目は1ページ目らしく、が必ずしも含まれる全てではない点に注意が必要かもしれません。

f:id:tsubaki_t1:20170504234703j:plain

アセットなので、Resourcesに配置して動的にロードも出来ます。但しSpriteAtlas=テクスチャという訳ではないので、そこんとこ注意が必要です。

AssetBundle等にAtlasを含める場合、コチラのほうが運用が楽そうです。

AtlasからSprite名を指定して直接Spriteを取得出来る

アセットとしてSpriteAtlasが指定出来る事は、SpriteAtlasからアセットを取り出せる事も意味します。例えば下のように、GetSpriteを指定すると、Atlasに含まれるスプライトが取得出来ます。

namespaceはUnityEngine.U2D。何だこの「U」は…unity…?

f:id:tsubaki_t1:20170504235042j:plain

Include in buildはAtlasを含めない設定

少し面白い挙動なのが、Include in buildです。

この項目のチェックを外すと、Atlasが参照しているSpriteが表示されなくなりました。

f:id:tsubaki_t1:20170505000730j:plain

 

主に下の用途で使用されます。

tsubakit1.hateblo.jp

感想

特に使い勝手が良さそうなのが、フォルダ・Sprite単位のAtlas化と、SpriteAtlasから直接Spriteを引っ張り出せる機能です。

それと、Spriteのテクスチャインポート設定を一括で設定出来るのは、悪くないような気がします。

関連

tsubakit1.hateblo.jp

tsubakit1.hateblo.jp

【Unity】生成した瞬間は勢いがあるが、すぐにゆっくりになるパーティクル

f:id:tsubaki_t1:20170503202413g:plain

生成した瞬間は勢いがあるが、すぐに速度が落ちてゆっくりになるパーティクルについてです。

作り方をど忘れしたので、ココにメモしておきます。

パーティクルの速度は生成時に決まる

パーティクルの移動速度は、パーティクル毎にEmit時にStartSpeedで指定されていた値が使用されます。
例えば下の設定の場合、パーティクルが生成時に15~30の速度が設定され、その速度は消えるまで固定です。

正確には、そこからVelocity Over LifetimeやLimitVelocityOverLifetimeで減加速が入ります。

f:id:tsubaki_t1:20170503203730j:plain

あとNoise等で動きに変化が加えられたり、ColliderやGravity Modifilerで重力や物理っぽい挙動が加わったりしますが、速度で言えば大体Start Speedです。

速度をLimit Velocity Over Lifetimeで制限する

粒子…というか、質量が低い物は少ない力で吹っ飛ぶ割に空気抵抗等で即座に減速するという挙動が脳内でマッチします。

ので、速度が固定で動いてもらっては困ります。

f:id:tsubaki_t1:20170503203423g:plain

すべきことは単純で、Limit Velocity Over Lifetimeを使用するだけです。

Speedが減速する速度の設定なので、StartSpeedがこの値以上設定されている場合は、この値になるまで減速されます。

Dampenは減速速度です。1の場合は一瞬で減速しますが、0の場合は一切減速しません。0.5あたりの場合は、ユックリ減速します。

f:id:tsubaki_t1:20170503210419g:plain

カーブでパーティクルの速度を制限

Speedを0にしてDampenを0.5辺りにすることでも起動時から減速開始ししばらくすると停止は再現出来ますが、もう少し綺麗に動かしたい場合はカーブを使用します。

f:id:tsubaki_t1:20170503211053g:plain

カーブで、Lifetime内での速度をカーブ指定出来ます。例えば下のカーブでは、

Lifetimeが1秒くらいと仮定した場合、

  • 0.15秒くらいまで30で移動
  • 0.2秒から減速開始
  • 0.6秒に速度が0になる
  • 1秒まで速度0
  • 1秒で(Lifetime設定により)パーティクル消滅

という挙動になります。

f:id:tsubaki_t1:20170503211329j:plain

なお一度減速すると加速はしないっぽいです。

関連

docs.unity3d.com

tsubakit1.hateblo.jp

unity3d-study.seesaa.net