2020年1月20日月曜日

従業員タワー

花京院ちえりさん(YouTubeチャンネル)のファンアートというかファンゲーム。
「どうぶつタワー」のオマージュです。

WebGL プラットフォーム対応です。

従業員タワー WebAssembly版
デスクトップブラウザとAndroid端末はこちら

従業員タワー asm.js版
iOS 端末はこちら


以下の画像はちえりさんがTwitterに放流した画像を使わせて頂いています。
  • ちえりちゃん
  • 従業員
  • おばけちゃん
使用BGM





2018年10月1日月曜日

Unity の現状メモ

Unity 2018.1 から IDE が MonoDevelop-Unity 5.9.6 ではなくなりインストーラーに以下が同梱される。
  • Windows : Visial Studio 2017 Community
  • macOS : Visial Studio for Mac
情報元(Unity Blog)

Unity のダウンロードはこちら
Visual Studio のダウンロードはこちら

2018年8月3日金曜日

Substance Painter

GPU トラブルシューティング


Substance Painter 起動時に警告が表示された場合

step-by-step guide に従ってレジストリを追加・修正


レジストリの詳細は TDR Registry Keys を参照

以上

2018年4月3日火曜日

Bolt

アセットストア
パブリッシャーサイト
マニュアル

製品ページの翻訳

BOLTとは

Unity用ビジュアルスクリプティングツールです。
コードでできることはすべてできます。
体裁は Unity エディタでシームレスに統合されます。
最先端のワークフローツールは、より効率的に作成するのに役立ちます。
Bolt と C# の組み合わせに制限はありません。

Flow Graphs

Flow Graph はイベントに始まり、コンポーネントのプロパティの変更、アクションのトリガー、ロジックと計算の実行、条件やループのチェックなど、思いつく限りのことが行えます。

State Graphs

State Graph は構造を一歩前進させ、敵に知的な行動をとらせたり、ユーザーインターフェースを管理したり、ゲームの構造を進化させることができます。

Events

アクション?リアクション。 任意の量と種類の引数を使用して、任意の Unity イベントを受け取ったり、独自のカスタムイベントをトリガーしたりできます。Bolt の強力なイベントシステムにより、オブジェクトやシーンをまたいで簡単にコミュニケーションできます。

Variables

Bolt の変数にあらゆる種類のデータを格納し取り出します。体力ポイント、名前、スコア、さらには複雑なデータ構造。 基本的なものだけでなく、あらゆるタイプがサポートされています。

ジョブ用に適切なスコープを選択してください:

  • Graph: グラフインスタンスのローカル
  • Object: ゲームオブジェクトで共有
  • Scene: シーン全体で共有
  • Application: シーン間で共有
  • Saved: 最初から最後まで保存

Macros

マクロによってノードのコピー&ペーストは不要となり、異なるパラメータで、全てのグラフを再利用できます。
グラフを入力と出力を持つスーパーノードに変換し、他のグラフの中に入れ子にすることができます。この方法でゲームロジックを整理し維持します。

Live Editing

Play を押して魔法を発動しましょう。クリアなアニメーションとインジケータを使ってゲームのフローをステップスルーし、何が起こっているのかを正確に理解してください。素早くプロトタイプを作成してバランス微調整するために、プレイモードでグラフを編集します。

Predictive Debugging

Play を押す前に、ほとんどのエラーを修正します。 Bolt は、エディタ内で欠落した入力、ヌル参照、欠落したコンポーネント、未使用のパスを検出し、一般的な落とし穴を見つけて貴重なテスト時間を節約できます。

Built-in Documentation

マニュアルをもう一度開く必要はありません。Bolt は Unity、.NET、およびサードパーティのドキュメントをエディタに統合しているため、すべてのポートの挙動が一目で理解できます。

Scripting API

Bolt と簡単にやりとりできます。シンプルでパワフルなスクリプト API を使用すると、変数の取得と設定、カスタムイベントのトリガー、高度なカスタムノードの作成が可能です。

Code Integration

すべての MonoBehaviour はグラフ内で使用でき、ScriptableObjects、クラス、構造体も利用できます。すべてのメソッドとプロパティをノードとして使用するには、オプションウィザードに任意のタイプを含めます。

Programmer Naming

名前を C# 流儀で表示するように Bolt を設定します。設定ひとつで、スクリプトファイルで呼び出されるのとまったく同じ型、メンバー、メソッドを表示できます。

機能


Smart Connections

Bolt は互換性のあるポートを強調表示し、その単位提案を文脈的にフィルタリングします。

Grouping & Layout

カスタマイズ可能なグループを作成してノードを整理します。レイアウトツールは、グラフをきれいに保つのに役立ちます。

Undo & Clipboard

Ctrl+Z であなたの心を遠ざけてください。アンドゥ、リドゥ、コピー、ペースト、複製を完全にサポートします。

Infinite Nesting

完全なグラフを単一の再利用可能なノードに変換します。スーパーユニットとステートはどのレベルでもネストすることができます。

Custom Inspectors

いくつかの単純な属性を使ってカスタムクラスまたは構造体を検査可能かつシリアライズ可能にします。

Error Recovery

Bolt は失敗の影響を正常に処理し、グラフデータを失うことはありません。

Drag & Drop

マウスを使用して変数、ユニット、マクロをグラフに挿入します。

Parallel States

単一の実行状態に制限されていない複雑な状態マシンを作成します。

Automatic Integration

すべてのサードパーティのプラグインは Bolt によって自動的に分析され、統合は必要ありません。

以上

2018年3月29日木曜日

Rewired

Rewired - Unity Asset Store
パブリッシャーサイト
ドキュメント

インストール


Rewired はインストールプロセスを順を追って行う使いやすいインストーラを提供しています。Rewired パッケージをインストールした後にインストーラが自動的に実行されるはずですが、実行されない場合や、ある時点で再度実行したい場合は、メニューからインストーラを起動することができます:Window -> Rewired -> Setup -> Run Installer
インストール中に、いくつかのことが起こります:
  1. Rewired.InputManager スクリプトは Script Execution Order に追加され、-32000 に設定されるため、他のスクリプトの前に実行されます。これは非常に重要であり、変更すべきではありません。
  2. YourProjectFolder/ProjectSettings の Unity InputManager.asset ファイルには、Rewired が必要とするすべてのジョイスティックとマウスのボタンと軸を含む新しい設定が追加されます。これは、Webplayer、Android、iOS などの Unityの入力システムを使用するプラットフォームで必要です。重要:Unity の入力マネージャでカスタムエントリを作成済みの場合、これらのエントリは Rewired によって上書きされず、元の InputManager.asset ファイルは、インストーラウィンドウに表示される場所にバックアップされます。
  3. Rewired/Data には、Rewired エディタに必要なデータを含むいくつかのファイルが作成されます。

クイックスタート


Rewired Input Manager を作成し、1人プレイ用ゲームの基本入力を設定する方法を説明します。

  1. Rewired をインストールします(上記インストールを参照)。
  2. シーンに Rewired Input Manager を作成します:Window -> Rewired -> Create -> Input Manager
  3. シーンの Hierarchy から Rewired Input Manager を選択します。
  4. Inspector で、"Launch Rewired Editor" をクリックします(詳細な使用方法については "Rewired Editor" を参照)。
  5. Rewired Editor ウィンドウの上部にあるナビゲーションバーで "Players" をクリックします。
  6. 入力を使用するには少なくとも1人の Player が必要です。Players ボックスの下の  "New" ボタンをクリックして、新しい Player を追加します。
  7. 後で Players に戻ってコントローラーマップを割り当てますが、まずいくつかのアクションを作成する必要があります。ナビゲーションバーの "Actions" ボタンをクリックし、Actions ボックスの下にある "New" ボタンをクリックして新しいアクションを作成します。
  8. ゲームに必要な入力ごとに1つのアクションを作成します。選択したアクションのプロパティは "Properties" の右側のフィールドで編集できます。移動動作の場合は Type を "Axis" に変更します。それぞれのアクションに Name (名前)と Descriptive Name (説明)を付けることができます。Type が Axis の場合は Positive Name (正)と Negative Name (負)も付けます。各プロパティラベルの上にマウスを置くと、そのプロパティの説明が表示されます。
    メモ:Actions は最初に Action Categories を作成する(または後に Categories に移動する)ことで分類できますが、例の簡単のため、すべてのアクションを Default カテゴリにしておきます。
  9. 各アクションには、キーボードのキー、ボタン、およびマウスの軸の振る舞いを決定する入力動作 (Input Behavior) を割り当てることができます。デフォルトでは、すべてのアクションに "Default" の入力動作が割り当てられます。いずれかの設定を微調整したい場合、または新しい入力動作を作成する場合は、ナビゲーションバーの "Input Behaviors" ボタンをクリックします。説明のために、各プロパティラベルの上にマウスを置いてください。この手引きの目的のために、デフォルトの動作をそのままにしておきます。
  10. 次に、ジョイスティックマップを作成しましょう。ナビゲーションバーの ”Joystick Maps” をクリックします。
  11. 完全サポートされているコントローラのマップを個別に作成することも、時間を節約することもできます。Dual Analog Gamepad テンプレートのマップを作成すれば、そのテンプレートを使用するすべてのコントローラにマップが自動的に作成されます([T] で始まるジョイスティックはテンプレート)。"[T] Dual Analog Gamepad" テンプレートを選択し "Create Map" をクリックします。
  12. 次に、要素 (Element) を作成し、アクションを割り当てる必要があります。要素を作成するには、"Element" ボックスの下の "New" をクリックします。Element Properties は、選択した要素の右側に表示されます。ジョイスティックの要素を割り当てるには、ドロップダウンの ”Element” をクリックします。"Action" でこの要素に割り当てるアクションを選択します。手順8で作成した各アクションの要素を作成し、各要素に1つのアクションを割り当てます。
  13. 次に、同じことをやってみましょう。今度はキーボードだけです。ナビゲーションバーの "Keyboard Maps" をクリックし、"Create Map" をクリックしてマップを作成し、"Element" ボックスの下にある "New" ボタンをクリックしていくつかの要素を作成します。上のジョイスティックマップで行ったように、各要素にアクションを割り当てます。軸を使用する移動動作の場合、キーボードのキーは軸ではなくボタンのように機能するため、”Axis Contribution” 設定を使用して、キーが最終軸に正または負の値を与えるかどうかを決定します。たとえば、"W" キーでキャラクターを上に移動させる場合、アクションは "Move Vertical" に設定し、"Axis Contribution" は "Positive" に設定する必要があります。"S" キーでキャラクターを下に移動させる場合、アクションは "Move Vertical" で、"Axis Contribution" は "Negative" でなければなりません。
  14. マウスマップを作成する場合は、キーボードとジョイスティックの場合と同じ手順を繰り返しますが、今回はナビゲーションバーの ”Mouse Maps” をクリックします。
  15. ジョイスティック、マウス、およびキーボードマップを作成したので、これを Player に割り当てる必要があります。ナビゲーションバーの "Players" ページに戻り、マップを割り当てる Player を選択します。
  16. "Add Joystick Map" ボタンをクリックして、Player にジョイスティックマップを割り当てます。割り当てようとするジョイスティックマップが複数ある場合は、必要な数だけ追加することができます。このデモでは、上で作成したマップを追加してください。別のジョイスティックマップを選択するには、Category と Layout ドロップダウンを変更します。"Start Enabled" がチェックされていることを確認して、このジョイスティックマップがデフォルトでアクティブになるようにします。ゲームプレイが始まり、この Player にジョイスティックが割り当てられると、そのジョイスティックの適切なマップがロードされます。
  17. あなたが作成したキーボードマップについても同じ操作を行います。
    メモ:キーボードコントロールでは "Assign Keyboard on Start" チェックボックスがオンになっていることを確認してください。そうしないと、スクリプトを使用して手動で割り当てない限り、Player にキーボードは割り当てられません。
  18. マウスマップでも同じ操作を行います。
    メモ:マウスコントロールでは "Assign Mouse on Start" チェックボックスがオンになっていることを確認してください。そうしないと、スクリプトを使用して手動で割り当てない限り、Player にマウスは割り当てられません。
  19. Rewired Editor を閉じてシーンを保存します。
  20. 次に、あなたのキャラクター用の入力を処理するスクリプトを作成する必要があります。スクリプトは作成しているゲームの種類によって大きく異なる可能性があるため、この例では Rewired からの入力方法の基本を示します。この例は、実際のゲームで使用するためのものではありません。
  21. プロジェクトに新しいスクリプト(例:MyCharacter.cs)を作成し、キャラクターゲームオブジェクトにスクリプトをアタッチします。→ソース
  22. 以上です!あなたは Rewired を使ってシングルプレイヤーゲームの基本入力を設定する方法を学びました。Rewired にはさらに強力な機能が用意されているので、その他の高度なトピックについては、残りのドキュメントを必ず読んでください。

Rewired Editor ドキュメント


他のパッケージとの統合

  • Bolt by Ludiq
    1. まず Bolt をインストールします。Bolt がインストールされていない場合は、統合パックのインストール時にエラーが発生します。
    2. Unity エディタで次のメニュー項目を実行します:
      Window -> Rewired -> Integration -> Bolt -> Install Integration Pack
    3. 画面の指示に従います。
    4. Bolt の AOT Safe Mode を無効にします。
      Tools -> Ludiq -> Project Settings -> AOT Safe Mode のチェックを外す
    5. メニューから Unit Options Wizard を実行して、Bolt Assembly Options に Rewired_Core および Rewired_Bolt_Runtime ライブラリ を追加します:
      Tools -> Bolt -> Unit Options Wizard
    6. 次に、使用する予定の Rewired クラスを Type Options ダイアログに追加します。Bolt からアクセスしたい Rewired クラスは、ここに追加する必要があります。
    7. 少なくとも以下のタイプを追加することをお勧めします:
      • Rewired.ReInput
        • Rewired.ReInput.PlayerHelper
          • Rewired.Player
            • Rewired.InputActionEventData
        1. Motion Controller by ootii
        以上

        2018年3月27日火曜日

        MMD を Unity へ

        MMD のモデルデータを Unity で使う方法。自分用まとめ。
        電脳少女シロちゃんを動かしたいだけの人生。

        以下 MikuMikuDance についてのメモ

        • MikuMikuDance
          • MikuMikuDance(64bitOS Ver)
            • 作者サイト VPVP からダウンロード。
            • Ver.9.31
        • モデルデータ編集
          • PmxEditor
            • 作者ブログ とある工房 のカテゴリ「ダウンロード」の記事から。
            • Ver.0.2.5.4
          • Blender
        • アクセサリ
        • モーションデータ

        ここから本題

        Unity 2017.3.1f1
        Stereoarts Homepage 様の MMD4Mecanim (2018/03/04) を利用。

        以下、ZIP同梱のマニュアルに従う。

        MMD4Mecanim チュートリアル(基本編)

        VMDモーションは使わないので設定なしで変換する。

        MMD4Mecanim チュートリアル(応用編)

        Animation Type を Humanoid に設定。

        目とあごのボーンは無いので None に設定。

        一旦 Physics Engine は無し。

        「公式の Mecanim チュートリアルの Mecanim モーションの適用方法」以降は省略。

        MMD4Mecanim リアルタイム版 IK & 回転付与

        BoneInherenceEnabled にチェック。

        IKEnabled とポンチョにチェック。

        Motion Controller (by ootii) を使う

        Anim の Enabled のチェックを外す。


        以上

        (c)Siro YouTuber

        Dynamic Bone

        Dynamic Bone - Unity Asset Store
        Version 1.2.0 ReadMe.txt 日本語訳+α

        Dynamic Bone はキャラクターの Bone や Joint にフィジックスを適用します。簡単な設定でキャラクターの髪、服、乳房、その他の部位がリアルに動くようになります。

        基本設定:

        1. Mecanim と従来のリグの両方で適切に設定されたキャラクターをサポート。
        2. Dynamic Bone を適用するゲームオブジェクトを選択。
        3. Component メニューから Dynamic Bone -> Dynamic Bone を選択。
        4. Inspectorで Root オブジェクトを選択。
        5. Dynamic Bone パラメータを調整(詳細は後述)​​。
        必要な場合には Collider オブジェクトを追加可能:
        1. Collider を設定するゲームオブジェクトを選択。
        2. Component メニューから Dynamic Bone -> Dynamic Bone Collider を選択。
        3. Collider の位置とサイズを調整。
        4. Dynamic Bone コンポーネントでコライダーを増やし、該当オブジェクトを追加。

        Dynamic Bone コンポーネント詳細:


        - Root
          フィジックスを適用する transform 階層のルート。

        - Update Rate
          内部の物理シミュレーションの速度。単位はフレーム/秒。

        - Update Mode
          Normal: 通常の更新。
          AnimatePhysics: 物理エンジンとの同期のためフィジックスループ中に更新。
          UnscaledTime: Time.timeScale と独立した更新。

        - Damping(減衰)
          どれくらい bone が減衰されるか。

        - Elasticity(弾性)
          どれくらいの力が元の向きへ戻るために各 bone に適用されるか。

        - Stiffness(剛性)
          どれくらい bone の元の位置が保持されるか。

        - Inert(不活性)
          どれくらいのキャラクターの位置変化が物理シミュレーションで無視されるか。

        - Radius(半径)
          各 bone は collider と衝突する sphere となることが可能。この sphere のサイズ。

        - Damping Distrib, Elasticity Distrib, Stiffness Distrib, Inert Distrib, Radius Distrib
          どのパラメータが階層チェーンを変更するか。カーブ値は該当のパラメータに乗算される。

        - End Length
          End Length がゼロでない場合は transform 階層の末端に追加の bone が生成され、長さは末端の2つの bone の距離で乗算される。

        - End Offset
          End Offset がゼロでない場合は, transform 階層の末端に追加の bone が生成され、オフセット値はキャラクターのローカル空間内となる。

        - Gravity
          ワールド空間における bone に適用される力。キャラクターの初期ボーズに部分的に適用された力は相殺される。

        - Force
          ワールド空間における bone に適用される力。

        - Colliders
          bone と相互作用する collider オブジェクト。

        - Exclusions
          物理シミュレーションから除外する bone。
           
        - Freeze Axis
          指定した平面上に bone の移動を制限。

        - Distant Disable, Reference Object, Distance To Object
          キャラクターがカメラまたはプレイヤーから離れた場合に、自動的に物理シミュレーションを無効にする。Reference Object が無い場合はデフォルトのメインカメラが使われる。

        Dynamic Bone Collider コンポーネント詳細:


        - Center
          オブジェクトのローカル空間における sphere または capsule の中心座標。

        - Radius
          sphere または capsule の半径。Transform の Scale 値によってスケールされる。

        - Height
          capsule の高さ。半分の sphere を2つ含む。Transform の Scale 値によってスケールされる。

        - Direction
          capsule の高さの座標軸。

        - Bound
          bone を境界外または境界内に制限。

        Dynamic Bone スクリプトリファレンス:

        - public void SetWeight(float w);
          既存のアニメーションとフィジックスのブレンドを制御する。

        - public void UpdateParameters();
          実行時のパラメータの更新には、パラメータの変更後にこの関数をコールする。

        以上

        画像内モデルは「電脳少女シロ」
         (c)Siro YouTuber