4.2K Views
April 10, 24
スライド概要
この資料では、箱庭のUnityを利用する上で、Unityの基本的な使い方について情報を整理しています。
- Unityとは何か
- Unityエディタの画面構成
- 基本的な操作方法
- Unityで物理シミュレーションするための基礎知識
TOPPERS/箱庭WG活動でUnityやらAthrillやらmROSやら触ってます。 最近は仕事の関係でWeb系の技術に注力しつつ、箱庭への転用を模索しています。 2023年8月1日:合同会社箱庭ラボに移動しました
箱庭(Hakoniwa) Unityの使い⽅ 合同会社箱庭ラボ 森崇
はじめに • この資料では、箱庭のUnityを利⽤する上で、Unityの基本的な使い⽅につ いて情報を整理しています。 • Unityとは何か • Unityエディタの画⾯構成 • 基本的な操作⽅法 • Unityで物理シミュレーションするための基礎知識 • 本チュートリアル⽤のサンプルプログラムは以下で公開しています。 • https://github.com/tmori/unity-tutorial 2
Unityとは何か • ユニティ・テクノロジーズ社が開発したゲーム開発プラットフォーム • 物理演算エンジンが搭載されています • 質量・速度・摩擦・⾵といった,古典⼒学的な法則をシミュレーションするコンピュータのソフトウェア • ※参照元︓ウィキペディア • Unityでできること • ロボット作れます • 物理的な法則に従ってモノを動かすことができます • ロボットの周辺環境も作れます 3
Unityエディタの画⾯構成(1/2) Sceneビュー Hierarchy ビュー Inspector ビュー Project ビュー 4
Unityエディタの画⾯構成(2/2) Gameビュー Main Cameraを通して移した世界 Console ビュー ここにログが出てきます 5
基本的な操作⽅法 • 視点の操作 • 視点移動 • 視点回転 • ズーム操作 • ゲーム・オブジェクトの操作 • ゲーム・オブジェクト移動 • ゲーム・オブジェクト回転 • ゲーム・オブジェクト拡⼤・縮⼩ 6
視点移動 マウス・ホイール押しながら右左 マウス・ホイール押しながら上下 7
視点回転 右クリックしながら右左 右クリック押しながら上下 8
ズーム操作 ズームイン ズームアウト 9
ゲーム・オブジェクト移動 左クリックしながら移動 10
ゲーム・オブジェクト回転 左クリックしながら回転 11
ゲーム・オブジェクト拡⼤・縮⼩ 左クリックしながら拡⼤・縮⼩ 12
Inspectorビューでもできます 13
Unityで物理シミュレーションするための基礎知識 • ゲームオブジェクト • プリミティブな素材 • 衝突判定⽤のオブジェクト • 物理挙動 • RigidBody • Jointコンポーネント • ArticulationBody • 独⾃処理(Unityスクリプト)の追加⽅法 • Unityイベント関数の実⾏順序 14
ゲームオブジェクト • Unity上のすべてのキャラやロボットはゲームオブジェクトで出来ています • 以下のTransform情報を持ちます • 名前 • 位置(x, y, z) • 回転(x, y, z) • スケール(x, y, z) 無⾊、透明です 15
プリミティブな素材 1. Cube 2. Sphere Cylinder 3. Capsule 4. Cylinder 5. Quad 6. Plane Cube Sphere Capsule Quad Plane 16
衝突判定⽤のオブジェクト • コライダの種類 • Boxコライダ • Sphereコライダ • Capsuleコライダ • Meshコライダ 17
プリミティブな素材のコライダを⾒てみる 全オブジェクトの Mesh Rendererをオン 全オブジェクトの Mesh Rendererをオフ 18
コライダによる衝突の様⼦ コライダなしの場合︓ コライダありの場合︓ 19
物理挙動 • RigidBody • Rigidbody (リジッドボディ) はオブジェクトに物理挙動を可能にするためのメインコン ポーネントです。リジッドボディを加えた瞬間から、オブジェクトは重⼒の影響を受けるよう になります。さらに、1つ以上の Collider (コライダー) コンポーネントを加わえれば、オブ ジェクトは衝突の影響によって動くようになります。 20
Jointコンポーネント • Joint (ジョイント) コンポーネントは、Rigidbody (リジッドボディ) を他の Rigidbody または空間の固定点に接続します。ジョイントはリジッドボディを 動かす⼒を加え、ジョイントの制限はその動きを制限します。ジョイントはリジッ ドボディに以下の⾃由度を与えます。 RigidBody Joint Jointコンポーネントの種類 RigidBody 箱庭での利⽤有無 Character Joint × Configurable Joint 〇 Fixed Joint 〇 Hinge Joint 〇 Spring Joint × 21
Fixed Joint • SphereにFixed Jointコンポーネントをアタッチし、Capsuleと接続する Sphere Fixed Jointを付ける Capsule 22
Fixed Joint 23
Hinge Joint • リジッドボディを、他のリジッドボディや空間上の点に、共有された原点で 取り付け、その原点の特定の軸を中⼼に回転させることができます。ドア や指の関節を模倣するのに便利です。 回転位置 (Anchor) ジョイントする RigidBody 回転対象 RigidBody 回転方向 (Axis) 24
Hinge Jointの例 回転位置 (Anchor) 回転方向 (Axis) ジョイントする RigidBody 回転対象 RigidBody 回転速度/⼒を決める パラメータ 25
Hinge Joint 26
物理挙動 • ArticulationBody • Articulation Body (連結ボディ) を使うことによって、ゲームオブジェクトを使ったロボッ トアームやキネマティックチェーンのような 物理的連結 を構築することができます。これら は、産業⽤アプリケーションのシミュレーションのコンテキストでリアルな物理動作を得るの に役⽴ちます。 • 連結ボディは、RigidBody や 通常のジョイント といった従来の構成で定義されるプロ パティを、1 つのコンポーネントで定義することができます。ただし、これらのプロパティは、 階層内のゲームオブジェクトの位置に依存します。 27
プロジェクト設定を変更する必要あります 28
論よりRUN! • RigidBodyをやめて、ArticulationBodyに変更する︕ Articulation Bodyをア タッチするだけ︕︕ 29
ArticulationBody 30
Fixed 31
Hinge Jointと同じ設定したい場合 CubeをCylinder配下に移動 CylinderのArticulationBodyの接合部分および回 CylinderのArticulationBodyの接合部 転⽅向を編集 分および回転⽅向を編集 Joint Typeを Revolute にして、回転 設定する
Revolute 33
独⾃処理(Unityスクリプト)の追加⽅法(1/2) • Unityのゲームオブジェクトには、Unityスクリプト(C#)を追加できます シミュレーション開始 時に呼び出されます フレーム毎に呼び出さ れます 34
独⾃処理(Unityスクリプト)の追加⽅法(2/2) 35 35
Unityイベント関数の実⾏順序 • https://docs.unity3d.com/ja/2023.2/Manual/ExecutionOrder.html Start() FixedUpdate() Update() Initialization Physics Rendering Input events End of frame Game logic Pausing Decommissioning 36
Unityイベント関数の実⾏順序 箱庭ロボットのセンサ/アクチュエータ 実装はFixedUpdate()内で実⾏ されます 37
Unityイベント関数の実⾏順序 38
Unityイベント関数の実⾏順序 39