テラシュールブログ

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

Unity

【Unity】Monobehaviourを継承したクラスをAddComponentボタン経由で追加出来なくする方法

「なんの役に立つのか分からない」裏技です。 Monobehaviourを継承したクラスは割と問答無用でAddComponentで追加することが出来るようになります。サンプルでコレを回避するコードを見かけたのでメモします。 やり方は単純で、[AddComponentMenu("")]をクラ…

【Unity】Cinemachineのカメラ位置や向きを、自分のスクリプトで制御する

Cinemachineを紹介すると「自分のシステムと相性が悪い」や「使い方が難しい」といった意見をよく聞きます。とは言えCinemachineが提供する「演出用カメラワークへのシームレスな移動」や「めり込み抑制や振動といったエフェクト」、「手ブレ」は使いたい所…

【Unity】Cinemachineで作るカメラワーク(カット割り:カメラを切り替える)

名前が正しいのか分からないのですが、カット割りでズームするアプローチの方法についてです。 カット割り 三段ズーム(カット割り) 会話のカット割り 感想 カット割り キャラクターの動きを作るとき、カットを割るというのが結構メリハリのある動きを表現…

【Unity】Cinemachineで作るカメラワーク("対象を中心に回り込む"を表現する3つのアプローチ)

Cinemachineでカメラワーク、対象を回り込むように移動させる方法についてです。 対象を中心に回り込むように 2点間のVirtual Cameraを対象を中心に円を描くように動かす SphericalPositionとCylindricalPositionの違い 対象の周囲を回るオブジェクトを用意…

【Unity】Profiler Native Plugin API

Unity 2018.2より、Profiler Native Plugin APIが実験機能として追加されました。何コレと思ったので少し探してみました。 Profiler Native Plugin API どうもコレは、Profilerの処理に追加でコールバックを設定してプロファイラーに乗せる情報をフックする…

【Unity】Roll a BallのカメラをCinemachineで制御したら結構良い感じになった(と思う)

CinemachineでRoll A Ballのカメラワークをやってみます。 Roll a Ballとカメラワーク カメラが追跡する対象を指定する カメラの移動設定 最も基本となる動作に近いTransposer & World Space 対象の移動先を予測して向きを変える 世界の裏側を見せないように…

【Unity】GTMF 2018の資料

GTMF2018の資料です。 SRPの導入方法とメリット、SRPを利用したトリックについて紹介されています。 【GTMF2018TOKYO】ScriptableRenderPipelineでアプリに最適な描画をしよう from UnityTechnologiesJapan www.slideshare.net ECSとC# Job System、Burstに…

【Unity】ShaderGraphで頂点シェーダーを使用してみる

Unity 2018.2から使用できるShaderGraph 3.0から頂点シェーダーの機能が使用できるようになったので、使ってみました。 ShaderGraph3.0 とりあえず上下に移動するだけのシェーダーを作る 旗も作ってみる 感想 ShaderGraph3.0 これを動かすには、ShaderGraph…

【Unity】チュートリアルやデモ作成に使えるかな? ゲームの動きをTimelineで再現する方法

前回はRigidbodyの動きをTimelineに格納することで、物理演算の負荷軽減やタイミングの調整などを行いました。今回はゲームの動きをAnimationClipとして格納しておき、Timelineで再生してみます。 ゲームの動きを再現したい やり方 再現できるのはInspector…

【Unity】Timelineで物理演算のような動きを使いたい

今回はTimelineで物理演算のような動きを再現するアプローチについてです。 物理表現的な動きをTimelineで使いたい 物理演算の動きをAnimationClipに変換してしまおう GameObjectの動きをレコードする Timelineに使用する Rigidbodyとか、その辺りを全て外す…

【Unity】カメラを常に揺らしたり、だんだんと揺れを強化したりする演出

以前紹介したカメラを振動させるアプローチの少し異なるバージョンです。 tsubakit1.hateblo.jp 瞬間的ではない振動を表したい 連続した揺れはCinemachine Noiseを使う 振動の状態を切り替える(Timeline) 振動の状態を切り替える(Timeline以外) 瞬間的で…

【Unity】衝撃があった時にカメラを揺らす / 振動させる

今回は、何らかの衝撃があったときにカメラを振動させる方法についてです。 カメラの振動 CinemachineのImpulseを使う 衝撃を発行する(コライダー編) 衝撃を発行する(コード) Timelineから振動を呼ぶ 感想 関連 カメラの振動 何か衝撃があったとき、カメ…

【Unity】multi-object editing not supported(複数のオブジェクトを選択したときに編集できなくなる)をエディター拡張無しに一気に編集する

コンポーネントのエディター拡張によっては、複数のオブジェクトを選択したときに「multi-object editing not supported」と表示され編集が出来なくなる物があります。 これがPrefab化しているならPrefabの大本をイジれば良いという話になるのですが、Prefab…

【Unity】Unity 2018.2でMacのVS Codeが入力補完してくれなくなった時の対処

Unity 2018.2にしたところ、MacのVS Codeが入力補完をしてくれなくなったので、その対策についてです。 結論としては、下のパッケージを入れればOKでした。 http://www.mono-project.com/download/stable/ WindowsのVisual Studioの場合はこちら tsubakit1.h…

【Unity】TimelineからAnimationEventのようにメソッドを呼び出したい UnityTimelineEvents

AnimationEventのように、Timelineのイベントを実行する方法についてです。 UnityTimelineEvents 実際に使ってみる 関連 Timelineを使用していると、特定のタイミングでイベントを発行したいと思う事はよくあります。例えば通常のカットシーンでは「爆発の衝…

【Unity】AnimationClipの編集が出来ない時の対策

今回は簡単なトラブルシューティングです。 AnimationClipがReadOnlyなのはFBXにAnimationClipが格納されているため TimelineがPreview中はAnimationClipをRecordにできない Optimized Game Objectが設定されたオブジェクトのAnimationは編集出来ない Animat…

【Unity】Timelineでキャラクターの「表情」を変更する時の注意点

今回はTimelineで表情を変更する場合の注意についてです。 Case 1.表情のキーがセットされない Case 2. 表情が変化しない Case 3. 表情がおかしな感じになる Timelineでキャラクターの動き等を変更していると「表情」も変更したくなります。例えばちょっとし…

【Unity】Nested PrefabやPrefabエディターが追加、新しいPrefabワークフローを触ってみた

Uniteベルリンにて、Nested Prefabが可能になるプレビュービルドが公開されたので触ってみました。 Prefabの階層化が出来るようになった Prefabのバリアント Prefabエディターの追加 プレビューのダウンロード Prefabの階層化が出来るようになった Unityでは…

【Unity】C# Job SystemからECSのEntityやComponentDataを追加・削除・変更する指示を出す

今回はECSのComponentDataの追加や削除・変更といった動作をJobSystem上から指示する方法についてです。 C# Job SystemからComponentDataの追加・削除等を指示する BarrierSystem サンプルコード IjobParallelFotやIJobProcessComponentDataで使用するには?…

【Unity】実践的なパフォーマンス分析と最適化

今回はUnite Tokyo 2018で紹介された「実践的なパフォーマンス分析と最適化」のセッションの動画から得られた物をメモしていこうと思います。 なおセッションの音声をそのまま文字にするのではなく、メモを元に自分なりの理解を文章に起こしています。内容の…

【Unity】ECSのメモリレイアウトとその周辺

今回はECS(Entity Component System)とはどういった機能かといった話について書いていこうと思います。この情報はハッキリ言えば知らなくても問題ない情報なのですが、知っておくとECSを採用するべきケースや作り方に迷ったときに助けになるかもしれません…

【Unity】Unite tokyo 2018の講演動画とスライドが公開

Unite tokyo 2018のセッション動画が公開されました。 セッション動画が公開 個人的お薦め 関連 セッション動画が公開 タイトル通りで、イベントの講演動画が公開になったみたいです。セッションのタイムテーブルからYoutubeやSlideshareのページへジャンプ…

【Unity】UnityでOSにインストールされてるフォントを使いたい

今回は「OSにインストールされたフォント」をUnityで使用する方法についてです。 フォントはゲームの第二の顔 そうだ、全部システムフォントを使おう 手順 フォールバックのやりすぎにご注意 CreateDynamicFontFromOSFontは使わないの? WebGLは? 関連 フォ…

【Unity】ドット絵でゲームを作る時に使いたい、ピクセルパーフェクトなスプライト表現するPixelPerfectCamera

今回は先程公開された、ピクセルパーフェクトなスプライト表現をするために(想定)ピクセルに合わせてスプライトやカメラの位置を調整してくれる機能PixelPerfectCameraについてです。現在はPackageManagerのstagingで提供されています。 想定解像度に合わ…

【Unity】Unityでベクターグラフィック(SVG)を利用する

https://github.com/Unity-Technologies/vector-graphics-samples/blob/master/Documentation/vectorgraphics.md UnityのPackageManagerにSVGを利用するライブラリが追加されました。Unity 2018.1でプレビュー版を使用することが出来ます。 どんな事が出来る…

【Unity】Allocator.TempJobで作ったNativeArrayを自動的に開放する

今回はNativeArrayの開放の方法についてです NativeArrayの削除 .Tempは普通に開放 .TempJobは少し楽 サンプル NativeArrayの削除 NativeArrayでコンテナを作る際、アロケータのモードに「Temp」「TempJob」「Persistent」の3つを選択することが出来ます。 …

【Unity】構造体の配列(NativeArray)と参照渡し

今回は構造体を配列(NativeArray)にした時の、そのアクセスについてです。 ECSとJobSystemは構造体の配列を使う 配列からrefやoutで参照を貰う事は出来ない そうだ、unsafeを使おう ArrayElementAsRefで要素のrefを取得する 関連 ECSとJobSystemは構造体の…

【Unity】ECSで簡単なゲームを作ってみたので、その解説

ECSで技術デモ的な物は結構あるのですが、ゲーム的になっているものが余り無いので、ECSで簡単なゲームを作ってみました。 そうだ、ECSで球転がしを作ろう ステージの作成は今までどおりシーンに作る 球のコントロールはGameObjectをシステムからコントロー…

【Unity】Timelineと移動を連携して、特定のタイミングから"指定の座標"へ移動させる

今回はTimelineの機能を使用するが、「目標地点が異なる」場合を対処する方法についてです。例えば「距離の異なる崖をジャンプで超える」や「位置が毎回異なる敵に攻撃を仕掛ける」といった物をTimelineで制御する場合の話です。 Timelineアニメーションの「…

【Unity】Unity 2018.1でunsafeなコードを使う

今回はunityでunsafeなコードを使う方法についてです。 以前はUnityは公式的にはUnsafeはサポートしていませんでしたが(unsafeを使う手順は存在して、IL2CPPもunsafe向けコードを出力していた)、Unity 2018.1辺り?からオプションとしてunsafeに対応したみ…