テラシュールブログ

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

【Unity】知らないと苦労するかもしれない、Timelineと座標の話

f:id:tsubaki_t1:20180514224133g:plain

 

 

Unity 2018.3以降の場合

この記事の内容の幾つかは当てはまりません。

tsubakit1.hateblo.jp

 

Unity 2018.2までのTimelineの座標系の話

今回はTimelineで知らないと多分死ぬ思いをする、Timelineの座標系の話です。
この部分を気にせず使用すると、「Timeline再生時にキャラクターが変な所に出現する」「Timeline操作を止めるとキャラクターの位置がおかしい」といった事が発生するかもしれません。 

 

AnimationControllerがAnimatorにセットされていれば現在位置から移動、無ければ絶対座標からアニメーションを開始する

Timelineで知っておくべき最初の事は、Timelineの移動モードはAnimationControllerの有無で変わるという点です。
TimelineのAnimationTrackから操作するキャラクターにAnimationControllerがセットされている場合には、キャラクターはTimelineを再生開始した位置から移動を始めます
逆にAnimationControllerが無い場合は、Timeline上で指定した位置を移動します

f:id:tsubaki_t1:20180514232541j:plain

例えば下のアニメです。

ユーコにはAnimationControllerがセットされず、逆にユニティちゃんにはAnimationControllerをセットしました。

Timelineで指定した動きは、ユーコの移動するパス(つまりオレンジから青に移動し、90度回転する)です。
ユーコはAnimationControllerがセットされていないため、どの座標に居たとしてもTimeline開始時には開始点であるオレンジに戻ります
一方ユニティちゃんはAnimationControllerがセットされている為、現在位置から移動を開始します

f:id:tsubaki_t1:20180514230903g:plain

 

ApplyTrackOffsetはAnimationControllerの有無で用途が異なる

今ひとつ用途のわからないApplyTrackOffsets。

AnimationTrackの説明文には以下のように書かれています。

Apply Track Offsets を有効にすると、選択したアニメーショントラック上のすべてのアニメーションクリップに同じ位置と回転のオフセットを適用できます。トラックオフセットの適用には シーンビューでギズモを使用して位置と回転のオフセットを設定する方法と、正確な位置と回転のトラックオフセットを指定する 2 つの方法があります。

f:id:tsubaki_t1:20180515013210j:plain

ではコレが何の役に立つのかというと、AnimationControllerの有無により動作が異なり、それにより用途が異なります。

 

まずAnimationControllerが無い場合…座標を調整したり同じ動きを行うキャラクターを量産する用途に使えます。
例えば下のように、同じようにダッシュするが位置が微妙に違う…みたいな場合には、トラック毎にApplyTrackOffsetの位置を少しずつズラせば、複数体を配置出来ます。

f:id:tsubaki_t1:20180514233153g:plain

ではAnimationControllerがセットされている対象を動かす場合は?
この場合はゲーム再生時にApplyTrackOffsetが無視されます

AnimationControllerがセットされている対象のApplyTrackOffsetは、キャラクターのアニメーション開始位置を調整した状態でのプレビューに役立ちます。
上に書いたとおりAnimationControllerはTimeline開始時から移動であるため、ステージの何処かで呼ばれる事になります。その時に、実際に動かしてみて確認ではなく、キャラクターの開始点をOffsetで動かしてプレビューする事が出来る訳です。

f:id:tsubaki_t1:20180514234637g:plain

なおRecorded OffsetやClipRootMotoinOffsetは微妙に似ている機能ですが、こちらはAnimationClipの開始点を0にするための設定です。こちらもAnimationControllerがある場合は無視されます。

 

AnimationControllerがセットされている場合、移動にはApplyRootMotoinが必要

Timelineでキャラクターをアニメーションしながら動かす等をする訳ですが、AnimationControllerの有無により動かし方が異なるみたいです。

 

AnimationControllerがセットされているキャラクターは、ApplyRootMotoinにチェックを入れていない場合、キャラクターはその場でバタ足をします。

逆にAnimationControllerが無い場合にはApplyRootMotionにチェックを入れなくとも動くみたいです。

f:id:tsubaki_t1:20180515002352g:plain

ApplyRootMotoinを使用してないがAnimationControllerを使用している(多分95%の)人々は、親のオブジェクトに乗せて動かすとか、Tween系のTrackを用意して動かすとかでも良いかもです。
Tween系のTrackはDefaultPlayablesに参考になるものが入ってます。

tsubakit1.hateblo.jp

Timelineを編集後、キャラの位置がズレるのはPreview中にキャラの位置を編集しているため

Timelineを使用していてよくあるのは、Timeline編集後にキャラクターが変な位置に移動する…というものです。これはTimelineのPreview中に編集していたりするとよく起こります。

TimelineのAnimationでの移動や座標指定は、TransformコンポーネントではなくAnimationで指定するかApplyTrackOffsetによるものです。そのためGizmoで何時ものように動かすと、再生時に変な所に移動したり、Preview停止時に全て元に戻ったりします。特に親子関係の構築は絶対に止めましょう。

 

その他Timelineで「何か設定が反映されてない」とか「プレビューが予想と違う」みたいな場合には、Previewボタンを押して一旦TimelineのON/OFFを切り替えると、大抵治ります。(TimelineのGraph生成(Preview)時に色々集めたり設定を揃えてる事が多いのでこうなる)

f:id:tsubaki_t1:20180515002835j:plain

 

それがAnimationControllerが無い場合はプレビュー後にキャラがどこか変な所に飛んでいくだけですが、AnimationControllerを持つキャラクターの場合は、何処か飛んでいった先から移動を開始するので、これは注意が必要です。
逆を言えば、プレビュー中でも特定の位置に動かせるって事でもありますが、それを嬉しいかと言えば、うーん

f:id:tsubaki_t1:20180515111013g:plain

 

要するに

AnimationControllerがあればゲームキャラクターのイベント用

AnimationControllerが無ければカットシーン用

 困ったことがアレばPreview連打

 

宣伝

Timeline使ったこと無い人向けに実況やります。

軽めで雑談しながら色々とやったりします(主にntny氏が)

 

関連

TImelineで物理演算の動きを再現するの面倒だよねという話

tsubakit1.hateblo.jp

ExposedProprtyTableは大体Preview時に色々と集めるので。

tsubakit1.hateblo.jp

座標系を理解してないと、妙な挙動になる代表

tsubakit1.hateblo.jpRootMotoinの無いキャラクターを動かすには

tsubakit1.hateblo.jp

【Unity】ProBuilderで作ったパーツを組み替えてステージを作る アプローチ

f:id:tsubaki_t1:20180512122308j:plain

パーツの組み合わせで簡単なステージを作ってみるのを試してみました

 

 

 パーツを組み合わせてステージを作るアプローチ

ステージを作る上で、地形を粘土のように調整して作るスピードレベルデザイン法式ではなく、パーツを組み合わせてステージを作るアプローチをProBuilderでやってみました。

例えば下のようなパーツを用意して、それを組み替えていきます。

f:id:tsubaki_t1:20180513161945j:plain

f:id:tsubaki_t1:20180513162010j:plain

考え方的にはタイルマップに似ていて、グリッドに合わせてオブジェクトを配置していく感じです。複雑な地形であっても、ある程度のパターンで作れるのが魅力です。

f:id:tsubaki_t1:20180513163656g:plain

このアプローチでは、部屋のレイアウトのみを作成して、屋内の家具や照明といったものは作りません。例えば下の図のように、部屋の中が殺風景にならないように余計なものを一杯置くのはあとで行います。

f:id:tsubaki_t1:20180513164916j:plain

 

ステージのパーツを作る

まずはパーツを作っていきます。
必要なものは「接続部分の大きさが固定」である事と「パーツの大きさが固定」である事です。なので、ProBuilderでは規格的な物を作っていきます。

 

PlaneをProBuilderで作成します。この時、大きさは10x10、分割数は5とします。

f:id:tsubaki_t1:20180513185510j:plain

パネルを選択するモードにして、パーツの壁の位置を選択していきます。例えばカドが閉じているステージの場合は、下のように選択していきます。

f:id:tsubaki_t1:20180513185803j:plain

選択した板を壁にします。Shiftを押しながら上に持ち上げても実現出来ますが、高さが固定出来ないのでパネルのボタンを使用して持ち上げます。

高さはAltを押しながらクリックで設定できるようになります。

f:id:tsubaki_t1:20180513185929j:plain

f:id:tsubaki_t1:20180513185937j:plain

持ち上げた壁には背景が存在します。この背景は大抵の場合は見える事は無いので排除していきます。そうすると、ステージのライトを焼いた時に使用するライトマップの範囲が大きく減ります。

f:id:tsubaki_t1:20180513190743g:plain

 

他のパーツを作る場合、接続部さえ綺麗になっていれば概ね綺麗に繋がります。

 

パーツを使い回すために出力する

パーツの数が揃ってきたら、次はファイルとして出力します。ProBuilderはモデルをPrefabとして出力しても何も残らないので、アセットとして出力する必要があります。

f:id:tsubaki_t1:20180513192556g:plain

 出力する際には、FBX ExporterかOBJ法式で出力するのが良さそうです。
それ以外だと出力の度にアセットのGUIDが変化し、Prefabへの参照が破棄されます。

個人的にはFBX Exporterが安定してる印象です。

f:id:tsubaki_t1:20180513191848j:plain

またExportする際には上書きしないとアセットが反映されないので、オブジェクトの名前は一定規則で持って作っておいたほうが良さそうです。

 

並べる

出力したら「アセットとして出力したパーツを使って」並べるだけです。残念ながらオートタイルのような機能は無いので頑張る必要があります。
例えばVキーを押してスナップ位置で調整したり、Ctrlを押して1mずつ動かす等で調整するのが良さそうです。
もしくはProGridもあります。

f:id:tsubaki_t1:20180513192931g:plain

 

関連

www.slideshare.net

blog.joelburgess.com

tsubakit1.hateblo.jp

 

www.slideshare.net

C#のコードがどのようなILに変換されるのかを確認するWebサービス SharpLab

f:id:tsubaki_t1:20180509235412j:plain

以前に教えてもらった、C#のコードがどのようなILに変換されるのかを確認することが出来るWebサービスについてです。
時々ど忘れするので、こちらにもメモしておきます。

 

SharpLab

sharplab.io

 SharpLabは、コードをILやアセンブリに変換することが出来るサービスみたいです。

f:id:tsubaki_t1:20180509235928j:plain

f:id:tsubaki_t1:20180510121600j:plain

 ところで、文字列のツナギ方で結構違いが出るんですね。

【Unity】Unityエディターを日本語化する方法(Unity2018.1)

今日Unite Tokyoで発表されたUnityエディターの日本語化についてです。

f:id:tsubaki_t1:20180507214854j:plain 

 

 

Unityエディターの日本語化

Unityエディターの日本語化対応方法が公式から公開されました。

エディターを日本語化することで、メニューアイテムが日本語化される他、殆どのUIの注釈等も日本語で表示されるようになります

f:id:tsubaki_t1:20180507215242p:plain

f:id:tsubaki_t1:20180507215348j:plain

 

また一度日本語化すると日本語と英語は即座に変更可能になります
Unityの機能はAPIと名前が一致している機能も多いので、コレのAPI何だっけってなった時には切り替えると良さそうです。
つまり、基本的に英語を使用するが、新しい機能を触るときには機能を把握するために日本語化する…といった事も可能という事です。

f:id:tsubaki_t1:20180507222015g:plain

 

将来的には、日本語化の手順無しに日本語化ができるようになるみたいです。インストール時に言語もインストールする的な。

将来のバージョンでは正式にUnity Hubからのインストール時に言語が選択可能になる予定です。日本語以外のサポートも予定しています。

 Unity Habからのインストールで日本語化が可能になりました。

 

大前提として、Unity 2018.1以降が必要です。

 

日本語化の手順

日本語化手順ですが、まずはUnityに対応したPOファイル(文字を置換する為のファイルみたいなもの)が必要です。

このPOファイルは現状2つの手順でインストールできます。

 

Unity未インストールの場合 もしくはUnityHubでインストールした場合

Unityがまだインストールしていない場合は、Unity Hubでインストールするのが一番楽です。

  1. Unity Hubを開き、Installを選択します。
  2. Official Releaseを選択します
  3. インストールしたいバージョンをDownloadします。
  4. 「Add Components to your install」ウィンドウが出て、追加で導入するコンポーネント(対応プラットフォーム)を選択するのですが、この一番下に言語パックがあるので、日本語にチェックを入れます

f:id:tsubaki_t1:20180711090608j:plain

 

f:id:tsubaki_t1:20180711090702j:plain

Unity 2018.2から、追加で日本語の言語パックをインストール出来るようになっているみたいです

 

 

POファイルを入れたなら

 

POファイルを入れたならば、次はPreferenceを開きます
これはMacならばUnity>Preference
MacならばEdit>Preferenceにあります。

 

Preferenceを開くと新しいLangageというメニューが追加されているので、それを選択、Editor Langageにチェックを入れ、Editor LangageをJapaneseに切り替えます。

最後に再起動します。

 

これでエディターの日本語化は完了です。

f:id:tsubaki_t1:20180507221111p:plain

f:id:tsubaki_t1:20180507221709j:plain

 関連

blogs.unity3d.com

これを期にソースコードに日本語使ってみても…?
→戦争

tsubakit1.hateblo.jp

POファイルのURL

http://editor-localization.s3-website-ap-northeast-1.amazonaws.com/2018.1/ja.po

 

求ム フィードバック

connect.unity.com

 

 

 

以下、古いアプローチ

 

既にインストールしている場合(使用不可)

チラっと探しましたが残念ながらPOファイルを独自に配っている感じではなかったので、下の手順で取得します。

まずPOファイル*1をダウンロードします。これは下のURLから取得できますconnect.unity.com

 

 

f:id:tsubaki_t1:20180507215645j:plain

 

次に指定のフォルダを作成します

フォルダパスはWindowsの場合は

{Unityをインストールしたファオルダ}\Editor\Data\Localization

Macの場合は

{Unityをインストールしたフォルダ}/Unity.app/Contents/Localization

となります。Unityをインストールしたフォルダは、例えばWindows

C:\Program Files\Unity\

C:\Program Files\Unity\Hub\Editor\{Unityエディターのバージョン}\

 Macの場合は

/Applications/Unity/

/Applications/Unity/Hub/Editor/{Unityエディターのバージョン}/

 あたりでしょう。
例えば「/Applications/Unity/Hub/Editor/2018.1.0f2/Unity.app/Contents/Localization」とか。

 

あとはダウンロードしたPOファイルをLocalizationフォルダ以下に格納します。

f:id:tsubaki_t1:20180507220858p:plain

 

なお、Macの場合、アプリケーションの中に入るのに「パッケージの内容を表示」で中に入れます。

f:id:tsubaki_t1:20180507220320g:plain

 

*1:多言語対応によく使われているファイル