Unity勉強会0527

# Unity勉強会0527
これはプログラミング初心者向けのゲーム制作勉強会資料です
プログラミング初心者でも扱えるUnityを使って、実際に3Dゲームを作る方法を学んでもらおうと思います
この記事ではUnityのバージョンインストールから簡単な3Dゲームを作るまでを説明します
実際に頭を使いながら手を動かしてもらいたいので、一部説明を省略しています
それでは、よろしくお願いします

## Unityって?
- 2D/3Dゲームが簡単に作ることができるゲーム制作エンジン
- それ以外にも、プロジェクションマッピングや最近話題のVR/AR、シミュレーションなどいろんな場面で利用されている
- とりあえずゲームが作りたいなら、Unityを使っておけば間違いない

# ゲーム制作の準備
## Unityのバージョンインストールをしよう

### 1. UnityHubを開く
↓こんな感じ

![UnityHubホーム画面.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3853507/af060034-f27c-4251-bfca-ab5b791818a2.png)

 ### 2. 左側にある「installs」を選択する

![UnityHub_インストール画面.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3853507/d213690a-9907-46ce-855b-688a2f4b109f.png)

### 3. 右上の青いボタン「install Editor」からバージョンを選択する
今回インストールするのは 2021.3.45f1
(今回は弊学の授業のカリキュラムに合わせているのでこのようなバージョン選定になってます)
#### 注：Windowsの方はIntelを、Macの方は各自でチップを確認してからインストールすること!!

![UnityHub_バージョン選択.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3853507/ad50469e-24ff-4734-bc62-c71a3f55dded.png)

### 4. 追加モジュールはいらないので何にもチェックを付けずに右下の青いボタン「install」を押す

![UnityHub_追加モジュール.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3853507/06caa89d-8d5b-4ec7-81b5-40b5748f60b5.png)

### 5. バージョンのインストールが始まるので待ち

![UnityHub_バージョンインストール中.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3853507/f1105404-631b-4221-b8b1-3837b3b135d4.png)

### 6. バージョンが追加されたら準備完了!!

![UnityHub_バージョンインストール完了.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3853507/4144ee65-21c5-46e7-b4e8-453e54959399.png)

## プロジェクトを作成しよう

### 1. UnityHubを開く
### 2. 右上の青いボタン「New project」を押す

![UnityHubホーム画面.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3853507/d4309d30-1f02-48a2-ac33-d8d60815c422.png)

### 3. 今回は3Dゲームを作るので「3D」を選択して右下の青いボタン「Create project」を押す

![UnityHub_プロジェクト作成.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3853507/16d9aaf2-4110-4dc0-8b2c-0f76c301767f.png)

# Hello Unity!!
## Unityの画面について知ろう
### 画面の説明
左　上：ヒエラルキーウィンドウ - 画面上のオブジェクトを管理する
中央上：シーンビュー/ゲームビュー - オブジェクトを配置したりテストしたりする
　右　：インスペクターウィンドウ - オブジェクトの設定をする
中央下：プロジェクトウィンドウ - フォルダ、スクリプト、オブジェクトなどを管理
ちなみにシーンビューの上にある三角ボタンはプロジェクト実行ボタン

![Unity_基本画面.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3853507/93225e2d-f5eb-4850-b72b-bd61cf76efe5.png)

## オブジェクトを作成してみよう
ヒエラルキーウィンドウを右クリック
3D object > Cube を選択

![Unity_オブジェクト作成方法.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3853507/b178c9bc-de92-4997-a346-6f27c8ae40cc.png)

キューブ生成 ｵﾒﾃﾞﾄｰ

![Unity_オブジェクト作成完了.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3853507/b419947b-2cfb-4e71-a4c1-a46194feb781.png)

 ### 他の3Dオブジェクト紹介
 Cube：立方体/直方体
 Sphere：球
 Capsule：カプセル
 Cylinder:円柱
 Plane：板
 Quad：画像貼ったりするときに使う

![Unity_その他オブジェクトの作成.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3853507/6cc61eff-54fc-462b-ae0f-fa9636673509.png)

### めっちゃ簡単にツールバーを説明
↓こんなやつ
![Unity_ツールバー説明.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3853507/10149ab6-c8c6-4de7-a6ba-0150af4320f9.png)

よく使うのは上から1番目と2番目
上から1番目はカメラの座標を変更する
ちなみにタッチパッドを二本指で触ったり、右クリックしながらカーソルを動かすとカメラが回転

![Unity_ツールバー説明01.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3853507/9788373a-6c11-4fa3-ac3b-6903e9938c69.png)

上から2番目は選択しているオブジェクトの座標移動

![Unity_ツールバー説明02.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3853507/8de07144-b7a0-453d-9a29-4d73e1a9efed.png)

## プレイヤーを作ってみよう
### 0. 先に床を作っておく
省略(どんな方法でもいいよ、わからなかったら聞いてね!)
### 1. Sphereオブジェクトを作成
省略(わからなかったら聞いてね!)
### 2. 物理演算コンポーネントを持たせる
1. ヒエラルキーウィンドウでSphereを選択する

![Unity_プレイヤー作成準備.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3853507/8ee91b32-126b-400d-88cb-ae9a795a6cd6.png)

2. インスペクターウィンドウの一番下にある「Add Component」

![Unity_プレイヤーインスペクター.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3853507/adf62ea9-da78-45ef-8502-d4b8e50bc72f.png)

3. 「Rigid body」を追加

![Unity_rigidbodyの付与.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3853507/12052e01-700b-4fc1-b859-3f64e8dfab24.png)

4. 完了
この段階で実行するとSphereが重力に引っ張られて落ちる

![Unity_rigidbodyの付与後.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3853507/91d277e3-0d95-445e-88bb-3fd10d4628b9.png)

### 3. スクリプトを書く
実際にSphereを操作するためにプログラミングしてみるよ

1. スクリプト作成
プロジェクトウィンドウ > Create > C# Script
![Unity_スクリプト作成方法.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3853507/e2b2d684-c10f-480d-84b8-9287f380ac9b.png)

2. スクリプト作成完了
スクリプトの名前を「Player」に変更

![Unity_スクリプト作成完了.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3853507/41bb0ace-80a3-4fbd-a406-6d2125613956.png)

3. ↓これをPlayerスクリプトにコピペ

```cs:Player.cs
using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class Player : MonoBehaviour
{
    private Rigidbody rb;
    void Start()
    {
        rb = GetComponent<Rigidbody>();
    }

    void Update()
    {
        if(Input.GetKey(KeyCode.W))
        {
            rb.AddForce(Vector3.forward);
        }
        if(Input.GetKey(KeyCode.S))
        {
            rb.AddForce(Vector3.back);
        }
        if(Input.GetKey(KeyCode.A))
        {
            rb.AddForce(Vector3.left);
        }
        if(Input.GetKey(KeyCode.D))
        {
            rb.AddForce(Vector3.right);
        }
    }
}
```

### 4. スクリプトをオブジェクトに持たせる
PlayerスクリプトをSphereにドラッグ&ドロップ

この時点で一度実行してみよう
WASDキーでSphereが移動するはず、、、

## カメラをプレイヤーに追従させよう

### 1. Cameraスクリプトの作成
省略(わからなかったら聞いてね!)
### 2. カメラにスクリプトを持たせる
スクリプトはこれ↓
```cs:Camera.cs
using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class Camera : MonoBehaviour
{
    private GameObject player;
    void Start()
    {
        player = GameObject.FindGameObjectWithTag("Player");
        transform.LookAt(player.transform);
    }

    void Update()
    {
        transform.position = new Vector3(player.transform.position.x, player.transform.position.y + 2, player.transform.position.z - 8);
        transform.LookAt(player.transform);
    }
}
```
### 3. Player.csの修正
カメラに対応させるためn修正
```cs:Player.cs
using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class Player : MonoBehaviour
{
    private Rigidbody rb;
    private GameObject mainCamera;
    void Start()
    {
        rb = GetComponent<Rigidbody>();
        mainCamera = GameObject.FindGameObjectWithTag("MainCamera");
    }
    
    void Update()
    {
        if(Input.GetKey(KeyCode.W))
        {
            rb.AddForce(mainCamera.transform.forward);
        }
        if(Input.GetKey(KeyCode.S))
        {
            rb.AddForce(-mainCamera.transform.forward);
        }
        if(Input.GetKey(KeyCode.A))
        {
            rb.AddForce(-mainCamera.transform.right);
        }
        if(Input.GetKey(KeyCode.D))
        {
            rb.AddForce(mainCamera.transform.right);
        }
    }
}
```

### 4. SphereのTagをPlayerに変更
ヒエラルキーウィンドウでSphereを選択 > インスペクターウィンドウの上の方にある「Tag」を選択 > Playerに設定

![Unity_Playerタグの変更.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3853507/13a25e1a-0796-4d0f-b076-816e17adba87.png)

ここで実行してみるとWASDキーでSphereが操作できて、移
動方向にカメラが向く、、、はず、、、、、

## ゲームを作ってみよう!!
今まで学んだことを活かして自分のオリジナルゲームを作ってみよう

※ いろいろできすぎちゃって暇な人へ、
こんなもの実装してみたらどう??
- 動く床/壁
- プレイヤーのジャンプ
- 十字キーでカメラ操作
- ゴール判定
- 落下/ゲームオーバー判定

## こんなことができる
### ひたすら上に登るゲーム(ジャンプ必要)
![スクリーンショット 2025-05-26 1.34.12.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3853507/613da983-8889-4bb9-b66e-14c1622fd041.png)

### 迷路(カメラ操作必要)
![スクリーンショット 2025-05-26 1.16.12.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3853507/027ee61d-a45c-4380-a789-a293501d0a97.png)

## さいごに
ここまで読んでいただき、ありがとうございました
今回はUnityのバージョンインストールから簡単な3Dゲームの作成までを説明しました
もしゲーム制作に興味があったり、将来ゲーム業界に進みたいという人がいれば、引き続きUnityを学んでもらえたらいいかなと思います
また、この記事や勉強会が好評でしたら次の開催があるかもしれないです、気分次第です
以上でUnity勉強会の資料を終わりとします