Unity入門ハンズオン

3.1K Views

August 19, 22

スライド概要

2022/08/19にG's ACADEMYにて実施した講座の資料

profile-image

可視化技術や人間計測/空間計測技術を活用した問題解決に関する研究開発。 ARコンテンツ作成勉強会(AR_Fukuoka)を主催。

シェア

埋め込む »CMSなどでJSが使えない場合

各ページのテキスト
1.

Unity⼊⾨ハンズオン

2.

⾃⼰紹介 ⽒名︓吉永崇(Takashi Yoshinaga) 専⾨︓ARを⽤いた医療⽀援や運動計測 Volumetric Video コミュニティ︓ARコンテンツ作成勉強会 主催

3.

ARコンテンツ作成勉強会の紹介 p 2013年5⽉に勉強会をスタート。 p ARコンテンツの作り⽅をハンズオン形式で学ぶ p ⼈数は5~10名程度の少⼈数で実施 p 参加条件はAR/VRに興味がある⼈(知識不要) p 各地で開催 (福岡、熊本、宮崎、⻑崎、⼤分、 ⿅児島、⼭⼝、広島、札幌、関東)

4.

Twitterと勉強会ページで情報を発信しています @AR_Fukuoka Googleで「AR勉強会」で検索

5.

ハッシュタグ #AR_Fukuoka

6.

Unity Hub起動 Unity Hub

7.

プロジェクトの作成 (1/6) ①Projects ②New Project

8.

プロジェクトの作成 (2/6) ここをクリック

9.

プロジェクトの作成 (3/6) 2021.3.X

10.

プロジェクトの作成 (4/6) 3D

11.

プロジェクトの作成 (5/6) プロジェクト名(例: AR_Test) 保存場所 Create Project

12.

プロジェクトの作成 (6/6) Unity Editorが起動すればOK

13.

Unity Editorの概要 Sceneタブ オブジェクトの一覧 オブジェクトの配置を行う プロジェクト内のフォルダやファイルの一覧

14.

オブジェクトを追加 何も選択していない状態で Hierarchyの空⽩を右クリック

15.

オブジェクトを追加 ①3D Object ②Cube

16.

オブジェクトを追加 Cubeが追加される

17.

オブジェクトを追加 カメラから⾒た視界を確認しよう

18.

動作確認 Playボタン

19.

動作確認 カメラ視点に切り替わる

20.

動作確認 再度Playボタンをクリックして停⽌

21.

注意︕︕ Unityでは実⾏状態でも編集ができますが、 実⾏を⽌めると編集内容は全て破棄されます。 必ず動作を⽌めてから編集に戻ること︕

22.

Next Step オブジェクトの位置・⾓度・サイズを変更しよう

23.

オブジェクトの位置・⾓度・サイズの設定① Cube

24.

オブジェクトの位置・⾓度・サイズの設定① 移動/回転/伸縮 移動 回転 伸縮

25.

Sceneの視点変更 [←][→]: 左右移動 [↑][↓]: 前後移動 Alt/option + ドラッグ: 回転

26.

オブジェクトの位置・⾓度・サイズの設定② Cube

27.

オブジェクトの位置・⾓度・サイズの設定② Inspector (≒選択オブジェクトの詳細)

28.

オブジェクトの位置・⾓度・サイズの設定② 下記の通りセット Position 0 5 0 Rogation 0 0 0 Scale 1 1 1

29.

オブジェクトの位置・⾓度・サイズの設定② 設定によってはCubeが⾒えなくなるかも

30.

オブジェクトの位置・⾓度・サイズの設定② Cubeをダブルクリック

31.

オブジェクトの位置・⾓度・サイズの設定② Cubeが画⾯中央に

32.

オブジェクトの位置・⾓度・サイズの設定② [↓]キーで少し離れた視点で観察

33.

オブジェクトの位置・⾓度・サイズの設定② カメラとの位置関係が⾒やすくなる

34.

Next Step オブジェクトの⾊を変更しよう

35.

⾊の設定について Cube

36.

⾊の設定について Inspector (≒詳細情報) Mesh Rendereに注⽬

37.

⾊の設定について Materialsを開く デフォルト⾊を設定済みの Default-Materialが 割り当てられている ※Unityではマテリアルで⾊や質感を設定

38.

⾊の設定について Inspectorの⼀番下で マテリアルの詳細を確認できるが Default-Materialは編集不可

39.

⾊の設定について 編集可能なマテリアルを作成しよう︕

40.

マテリアルの作成 Project Assets

41.

マテリアルの作成 空⽩を右クリック

42.

マテリアルの作成 ①Create ②Material

43.

マテリアルの作成 New Materialというファイルができる

44.

マテリアルの適⽤ Cubeをクリック

45.

マテリアルの適⽤ MeshRenderer Materials内の Default-Materialを⾒つけておく

46.

マテリアルの適⽤ Default-Materialの上に ドラッグ&ドロップ New Materialに注⽬(クリックしない)

47.

マテリアルの適⽤ New Materialに差し代わる ▷をクリックして詳細を開く

48.

マテリアルの適⽤ Albedo横の□をクリック

49.

マテリアルの適⽤ ⾊を選択 (選択が終わったら閉じる)

50.

Next Step オブジェクトの新たな詳細情報を追加しよう 例︓物理法則の適⽤

51.

挙動の追加 Cube Add Component

52.

挙動の追加 Add Componentを使うと デフォルトでは設定されていない詳細情報を 追加することができる

53.

挙動の追加 Physics

54.

挙動の追加 Rigidbody

55.

挙動の追加 Rigidbodyが追加されている Use Gravityがオンだと 重⼒の影響を受けるようになる

56.

動作確認 Play

57.

動作確認 落下する

58.

動作確認 再度Playで停⽌

59.

Next Step オブジェクト間の⼲渉

60.

オブジェクトの追加 Hierarchyの空⽩を右クリック

61.

オブジェクトの追加 3D Object Plane

62.

オブジェクトの追加 板が追加される

63.

オブジェクトの追加 Plane

64.

オブジェクトの追加 Positionを0 0 0

65.

オブジェクトの追加 回転モードを選択

66.

オブジェクトの追加 カメラの⽅に少し傾ける

67.

動作確認 Cubeが転げ落ちる

68.

Next Step C#スクリプト記述でインタラクションを実現しよう 例︓画⾯クリック・タップ

69.

マウスクリック・画⾯タップ検知 Hierarchyの 空⽩を右クリック

70.

マウスクリック・画⾯タップ検知 Create Empty

71.

マウスクリック・画⾯タップ検知 ClickObjectに名前を変更 ※名前はなんでもOK

72.

マウスクリック・画⾯タップ検知 Add Component

73.

マウスクリック・画⾯タップ検知 検索欄を空にする New script

74.

マウスクリック・画⾯タップ検知 Script名をClickScriptに変更 ※名前は何でもOK Create and Add

75.

マウスクリック・画⾯タップ検知 ClickScriptが追加されている

76.

マウスクリック・画⾯タップ検知 Assets ClickScriptをダブルクリックで開く

77.

マウスクリック・画⾯タップ検知 public class ClickScript : MonoBehaviour { // 初期化のために1度だけ実⾏される void Start() { } // 毎フレーム実⾏される void Update() { } }

78.

マウスクリック・画⾯タップ検知 // 初期化のために1度だけ実⾏される void Start() { } // 毎フレーム実⾏される マウス押下をチェック void Update() { if (Input.GetMouseButtonDown(0)) { Debug.Log("Click!"); } }

79.

Ctrl/Command + S で保存

80.

マウスクリック・画⾯タップ検知 Console

81.

動作確認 Playボタン

82.

動作確認 画⾯クリック 結果が表⽰される

83.

動作確認 再度Playボタン クリックで停⽌

84.

Next Step オブジェクトを動的に⽣成しよう 例︓画⾯クリックでCubeを投げる

85.

クリックしたらBoxを⽣成 Hierarchyに置かれたCubeは既に空間に存在 → そうではなく画⾯クリック時に空間に登場させたい

86.

クリックしたらBoxを⽣成 Project

87.

クリックしたらBoxを⽣成 Cube

88.

クリックしたらBoxを⽣成 Assetsの中にドラッグ&ドロップ Assets

89.

クリックしたらBoxを⽣成 物理が適⽤されたCubeに関する 情報を持ったファイルができる

90.

クリックしたらBoxを⽣成 この情報をもとにスクリプトから Cubeを空間に登場させる

91.

クリックしたらBoxを⽣成 //Unityエディタ内のオブジェクトと変数を関連づける [SerializeField] GameObject cube; void Start() { } // 毎フレーム実⾏される void Update() { if (Input.GetMouseButtonDown(0)) { Debug.Log("Click!"); } }

92.
[beta]
クリックしたらBoxを⽣成
// 毎フレーム実⾏される
void Update()
{
if (Input.GetMouseButtonDown(0))
{
Debug.Log("Click!");
//Unity空間に箱を⽣成
GameObject obj = GameObject.Instantiate(cube);
//視点を設定するカメラを取得
Camera cam = Camera.main;
//箱の初期位置をカメラの位置に設定
obj.transform.position = cam.transform.position;
//箱に⼒を加えて⾶ばす(引数︓⼒ x ⽅向, ⼒の種類)
obj.GetComponent<Rigidbody>().AddForce(
10 * cam.transform.forward, ForceMode.Impulse);
}
}

93.

Ctrl/Command + S で保存

94.

クリックしたらBoxを⽣成 ClickObject

95.

クリックしたらBoxを⽣成 ClickScript内、Cubeの横の ボックスにドラッグ&ドロップ Cubeに注⽬ (クリックしない)

96.

動作確認 Playボタン

97.

動作確認 Cubeが発射される

98.

動作確認 再度Playボタン クリックで停⽌

99.

Next Step 遅延処理を実現しよう 例︓Cubeを数秒後に削除

100.

Cubeの⾃動削除 Cube

101.

Cubeの⾃動削除 Add Component

102.

Cubeの⾃動削除 New script

103.

Cubeの⾃動削除 スクリプト名を AutoDestroy Create and Add

104.

Cubeの⾃動削除 AutoDestroyが Cubeに追加される

105.

Cubeの⾃動削除 AutoDestroyを ダブルクリックで開く

106.

Cube削除コルーチンの記述と呼び出し public class AutoDestroy : MonoBehaviour { void Start() { StartCoroutine(DestroyWithDelay()); } IEnumerator DestroyWithDelay() { //10秒後に⾃分⾃⾝を抹消 yield return new WaitForSeconds(10); Destroy(gameObject); } } void Update() { }

107.

Ctrl/Command + S で保存

108.

動作確認 Playボタン

109.

動作確認 ⼀定時間後にCubeが消えていく

110.

動作確認 再度Playボタン クリックで停⽌

111.

完成︕