Unity4.6のチュートリアルをやってみる(翻訳完了)


# 概要

Unite2014のワークショップが面白そうだ。しかも資料と動画が全て公開されているのでレッツ写経。
Nightmareという見下ろし型シューティングが出来るらしいよ。

- [Unity - Project: Survival shooter](http://unity3d.com/learn/tutorials/projects/survival-shooter)
- [willgoldstone.com/utd2014.pdf](http://willgoldstone.com/utd2014.pdf)

チュートリアル中には下記の機能がでてきます。

- Animator Controller (Mecanim)
- GUI
- Animator Override Controller
- Nav Mesh
- Particle

![](https://www.evernote.com/shard/s22/sh/95708919-6b3e-41f5-a155-f630b604c533/460aae8905394ff70740dd978207f330/deep/0/Level-01.unity---UnityNightmare---Web-Player.png)

# 事前準備

Unity4.6 Betaをインストールしましょう。
- [Unity - Beta - Unity 4.6](http://unity3d.com/unity/beta/4.6)

プロジェクトデータをアセットストアからダウンロード
- [Asset Store - Nightmares - Unite Training Day 2014](https://www.assetstore.unity3d.com/jp/#!/content/21028)

# Phase 1 環境のセットアップ 18分

[Unity - Environment setup](http://unity3d.com/learn/tutorials/projects/survival-shooter/environment)

slide1
- エディタのレイアウトを<code>2 by 3</code>に
- プロジェクトタブをヒエラルキーの下に
- プロジェクトビューのスライダーを最小に
- File > New Scene
- File > Save Scene As Level 01としてScenesフォルダに保存

slide2
- EnvironmentプレハブをプロジェクトビューのPrefabsフォルダから探す
- シーンかヒエラルキーにドロップ
- Transformのpositionを0,0,0に
- 同じ手順をLightsプレハブにも繰り返す
- シーンを保存 (CMD-S / CTRL-S)

slide3
- Game Object > 3D Object > Quad
- Floorにリネーム (Return / F2)
- Positionを 0,0,0
- Rotationを 90,0,0
- Scaleを 100, 100, 1

slide4
- FloorオブジェクトからMesh Rendererコンポーネントをリムーブ 
- Floorオブジェクトのインスペクタからレイヤーを Floorに変更
- シーンを保存

slide5
- GameObject > Create Empty
- BackgroundMusicにリネーム
- Add Component > Audio > Audio Source
- Audio Clip > Circle Select > Background Music
- loopにチェック、Volumeを0.1に
- シーンを保存

![ssp1](https://www.evernote.com/shard/s22/sh/d459803d-b9d9-4e90-8426-e5e2c60fcb3d/7881f34e856211bbca01ecf7421a11ed/deep/0/全画面-2014-09-07-15-20.png)

# Phase 2 プレイヤーキャラクター 57分

[Unity - Player Character](http://unity3d.com/learn/tutorials/projects/survival-shooter/player-character)

slide 1
- Playerモデルを Models > Charactersフォルダから探す。
- シーンかヒエラルキーにドロップ
- Positionを 0,0,0 に。
- インスペクタからタグをPlayerに設定

slide 2
- Animationフォルダを選択しCreateをクリック。Animation Controllerを選択。
- PlayerACにリネーム
- ヒエラルキーの中のPlayerにドロップ
- Animationフォルダの中のPlayerACをダブルクリック
- Animatorウインドウをシーンビューに合体

slide 3
- Models > CharacterのPlayerモデルを展開（下向き三角を展開）
- Idle, Move, DeathアニメーションをAnimatorビューの空白のエリアにドラッグしてステートを作成
- Idleステートを右クリックしてデフォルトに設定
- boolパラメータを作成しIsWalkingとする
- Triggerパラメータを作成しDieとする

slide 4
- Idleステートを右クリック、MoveステートへMake Transition
- 作成したTransitionを選択
- ConditionをIsWalking = true に設定
- Moveステートを右クリックしIdleステートへMake Transition
- ConditionをIsWalking = false に設定
- Any Stateを右クリックしDeathステートへMake Transition

slide 5
- Conditionを Die(Trigger)
- Playerゲームオブジェクトを選択、Add Component > Physics > Rigidbody
- DragとAngular DragをInfinityに
- Constraintsを開き Y positionと X, Z Rotationをフリーズ

slide 6
- Playerゲームオブジェクトを選択。 Add Component > Physics > Capsule Collider 
- Center を (0.2, 0.6, 0) 
- Height を 1.2 

slide 7
- Add Component > Audio > Audio Source 
- Audio Clip > ◯アイコンをクリック、 Player Hurt 
- Play On Awake を外す
- PlayerMovement スクリプトを Scripts > Player から探す 
- ヒエラルキーのPlayerオブジェクトにドラッグ
- シーンを保存

slide 8
- PlayerMovementスクリプトをダブルクリックして開く

Slide9

- 変数を追加

```CSharp:クラスへの変数追加
    public float speed = 6f;
    Vector3 movement;
	Animator anim;
	Rigidbody playerRigidbody;
	int floorMask;
	float camRayLength = 100f;   
```

slide 10

- Awakeメソッドを追加

```CSharp:Awakeメソッドの内容
    void Awake ()
    {
        floorMask = LayerMask.GetMask ("Floor");

        anim = GetComponent <Animator> ();
        playerRigidbody = GetComponent <Rigidbody> ();
    }
```

slide 11

- FixedUpdateメソッドを追加

```CSharp:FixedUpdateの内容
    void FixedUpdate ()
    {
        float h = Input.GetAxisRaw ("Horizontal");
        float v = Input.GetAxisRaw ("Vertical");
     }
```

slide 12

- Moveメソッドを追加

二軸の移動量を平準化

```CSharp:Moveメソッドの内容
    void Move (float h, float v)
    {
        movement.Set (h, 0f, v);
        
        movement = movement.normalized * speed * Time.deltaTime;

        playerRigidbody.MovePosition (transform.position + movement);
    }
```

slide 13

- Turningメソッドを追加

カメラからRayを飛ばしあたった場所を基準に。

```CSharp:Turningメソッドの内容
    void Turning ()
    {
        Ray camRay = Camera.main.ScreenPointToRay (Input.mousePosition);

        RaycastHit floorHit;

        if(Physics.Raycast (camRay, out floorHit, camRayLength, floorMask))
        {
            Vector3 playerToMouse = floorHit.point - transform.position;

            playerToMouse.y = 0f;

            Quaternion newRotation = Quaternion.LookRotation (playerToMouse);

            playerRigidbody.MoveRotation (newRotation);
        }
    }
```

slide 14

- Animatingメソッドを追加

```CSharp:Animatingの内容
    void Animating (float h, float v)
    {
        bool walking = h != 0f || v != 0f;

        anim.SetBool ("IsWalking", walking);
    }
```

slide 15

- FixedUpdateから各メソッドをコール

```CSharp:FixedUpdateを更新
    void FixedUpdate ()
    {
        float h = Input.GetAxisRaw ("Horizontal");
        float v = Input.GetAxisRaw ("Vertical");

        Move (h, v);
        Turning ();
        Animating (h, v);
    }
```

slide 16

- スクリプトを保存
- Playボタンをクリックしてテスト
- Stopで止める。ポーズはしないこと。

![ssp2](https://www.evernote.com/shard/s22/sh/c3f9d9a1-762f-4dfa-bbba-8bc6bd3197ab/1e64175edcca0bbf503b2c817b8b92c6/deep/0/全画面-2014-09-08-0-50.png)


# Phase 3 カメラのセットアップ 15分

[Unity - Camera setup](http://unity3d.com/learn/tutorials/projects/survival-shooter/camera-setup)

slide 1

- ヒエラルキーのMain Cameraを選択 
- Transform Position を (1, 15, -22) 
- Transform Rotation を (30, 0, 0) 
- モードをProjectionをOrthographicへ変更 
- Size を 4.5 

slide 2

- 背景色をBlack
- シーンを保存
- プロジェクトパネルの Scripts フォルダの中の Camera フォルダを選択。
- Create > C# Script 
- CameraFollow にリネーム

slide 3

- CameraFollowスクリプトをヒエラルキーのMain Cameraにドロップ
- シーンを保存
- インスペクタのOpenをクリックしてスクリプトを開く

slide 4

- StartとUpdateを削除

```CSharp:削除する箇所
	// Use this for initialization
	void Start () {
	
	}
	
	// Update is called once per frame
	void Update () {
	
	}
```

slide 5

- 何もなし

slide 6

- 変数を追加

```CSharp:追加する変数
	public Transform target;
	public float smoothing = 5f;

```

slide 7

- プライベート変数を追加

```CSharp:変数追加
	Vector3 offset;
```

slide 8

- Startを追加

```CSharp:追加
	void Start ()
	{
		// Calculate the initial offset.
		offset = transform.position - target.position;
	}
```

slide 9

- FixedUpdateを追加

```CSharp:追加
void FixedUpdate ()
	{
		Vector3 targetCamPos = target.position + offset;
		
		transform.position = Vector3.Lerp (transform.position, targetCamPos, smoothing * Time.deltaTime);
	}
```

slide 10

- スクリプトを保存しUnityへ戻る
- Main Cameraを選択し、PlayerオブジェクトをCameraFollowのTarget変数にアサイン
- PlayerオブジェクトをPrefabsフォルダにドラッグしプレハブ化。保存してテストプレイ。

![ssp3](https://www.evernote.com/shard/s22/sh/8abc327f-a27a-4a1b-85fe-800aacf3175f/76e85fc0a36aa304da91e09e46b1b8bd/deep/0/Cursor-と-Level-01.unity---UnityNightmare---Web-Player-と-Unity4.6のチュートリアルをやってみる(更新中)-と-willgoldstone.com-utd2014.pdf.png)

# Phase 4 敵その1 32分

[Unity - Creating Enemy #1](http://unity3d.com/learn/tutorials/projects/survival-shooter/enemy-one)

slide 1

- Zombunnyモデルを Models > Characters フォルダから探す 
- シーンへドロップ 
- HitParticlesをPrefabsフォルダから探し、ヒエラルキーのZombunnyにドロップ
- レイヤーをShootableに変更

slide 2

- Add Component > Physics > Rigidbody
- Drag と Angular Drag を Infinity に
- ConstraintsでFreeze Position Y と Freeze Rotation X と Zを設定 
- Add Component > Physics > Capsule Collider 
- Center Y を 0.8 、 Height を 1.5 

slide 3

- Add Component > Physics > Sphere Collider 
- Is Triggerをチェック 
- Center Y と Radius を両方 0.8　に。 
- Add Component > Audio > Audio Source 
- Zombunny Hurt audio clip を選択
- Play On Awake をアンチェック

slide 4

- Add Component > Navigation > Nav Mesh Agent
- Radius を 0.3
- Speed を 3
- Stopping Distance を 1.3
- Height を 1.1 

slide 5

- Window > Navigation を開く
- Bake タブを選択
- Radius を 0.75 
- Height を 1.2 、 Step Height を 0.1 
- Advanced エリアの Width Inaccuracy % を 1 
- BakeをクリックしてNav Meshを生成 

![ssp4](https://www.evernote.com/shard/s22/sh/147e729f-be6c-4b00-9845-a115dcd5b7ab/0f60f627bd9adc45fcaf94e16efd1eb4/deep/0/全画面-2014-09-09-0-22.png)

slide 6

- Animationフォルダを開く 
- Create > Animator Controller
- EnemyAC (for Animator Controller) にリネーム
- ヒエラルキーのZombunnyにドロップ 
- EnemyAC をダブルクリックして開く

slide 7

- Zombunny モデルを Models > Characters フォルダーから探し開く
- 3つのアニメーションを探す - Idle, Move and Death set up 
- それぞれのクリップをAnimatorにドラッグ、Moveから置くと良い
- Idle と Move を近くに、Death と Any Stateを近くに配置

slide 8

- Moveステートがデフォルトか確認（オレンジ色にハイライト） 
- そうでない場合は右クリックしてデフォルトに設定
- PlayerDead というTrigger Parameterを作成
- Dead というTrigger Parameterを作成

![ssp42](https://www.evernote.com/shard/s22/sh/a9080607-b918-44b1-a701-f1ebd0a842f8/6a021bb499673cd56177233c989a02e2/deep/0/Cursor-と-Level-01.unity---UnityNightmare---Web-Player-と-willgoldstone.com-utd2014.pdf.png)

slide 9

- Move ステートを右クリックし Idle ステートへCreate Transition 
- Any ステートを右クリックし Death ステートへCreate Transition 
- Condition の Move -> Idle を PlayerDeadに。
- Condition の Any State -> Death を Deadに。

![ssp44](https://www.evernote.com/shard/s22/sh/1d19cb2d-f8f3-41c8-9918-25604d96957d/ea126840b3d01f396c99b9561d83260f/deep/0/Cursor-と-Level-01.unity---UnityNightmare---Web-Player.png)

slide 10

- Scripts > Enemy フォルダから EnemyMovement を探し Zombunny へドロップ 
- シーンを保存
- スクリプトを開く 
- プレイボタンを押してテスト

![](https://www.evernote.com/shard/s22/sh/e3b25f4c-e9cb-4b41-843d-bfdced7db1f9/7cb9e2e0df46f7002cf22b1fad7b92b1/deep/0/全画面-2014-09-09-0-47.png)

敵がNavMeshを使って追いかけてくるようになった。

https://www.youtube.com/watch?v=kEIIam4NCmY&feature=youtu.be

PlayerのRigidbodyにIs Kinematicが入っていてすり抜けている。

ここまでで午前終了、ランチ休憩だったらしい。

# Phase 5 ヘルスのHUD 21分

[Unity - Health HUD](http://unity3d.com/learn/tutorials/projects/survival-shooter/health-hud)

slide 1

- シーンビューの 2d modeボタンをクリック
- メニューから GameObject > UI > Canvas を選択
- Canvas を HUDCanvas にリネーム
- Add Component > Miscellaneous > Canvas Group 
- Interactable と Blocks Raycasts のチェックを外す

slide 2

- HUDCanvas を右クリック、 Create Empty to add child 
- HealthUIにゲームオブジェクトをリネーム 
- Rect Transformのアンカープリセットを Alt+Shiftを押しながら左下合わせをクリック
- Rect Transform　の Width を 75 、 Height を 60

![](https://www.evernote.com/shard/s22/sh/9ce26291-0016-41cd-b92c-03fd665cf9db/8f40e5c304ab1797662ab05de03fc02e/deep/0/Level-01.unity---UnityNightmare---Web-Player.png)

slide 3

- HealthUIを右クリック、 > UI > Image to add child 
- Image を Heart にリネーム 
- Rect Transform の Position X と Y を 0
- Width と Height を 30 
- Image component の Source Image に◯選択をクリックしアセットのHeart spriteを選択

![](https://www.evernote.com/shard/s22/sh/3056b048-fa4c-428d-8daf-c54d3d36caa4/5778f9520202c81d67bd0db453627aa0/deep/0/Level-01.unity---UnityNightmare---Web-Player.png)

slide 4

- HealthUI を右クリック > UI > Slider 
- Slider を HealthSlider にリネーム
- Rect Transform の Position X を 95, Y を 0 
- HealthSlider を展開し子を表示、 Handle Slide Area を選択して削除する。

![](https://www.evernote.com/shard/s22/sh/7df7c429-92ce-4cc2-8774-5d059082e1c1/3c748daff183409db492a2f3bd94be30/deep/0/Level-01.unity---UnityNightmare---Web-Player.png)

slide 5

- HealthSliderのSlider コンポーネントのTransition mode を None 
- Max Value を 100 
- actual Value を 100 （体力満タン）

![](https://www.evernote.com/shard/s22/sh/a3633479-3e35-4e17-888a-bff0ff705504/5c535c2a1970f8eedd0508f911ccdd63/deep/0/Level-01.unity---UnityNightmare---Web-Player.png)

slide 6

- HUDCanvas を右クリック create a UI > Image
- DamageImageにリネーム、Rect Transformのアンカーを両端のばしにセット。Alt押しながら右下のアイコンをクリック。 
- Image componentのColourをblock 、Alpha (A) を 0

![](https://www.evernote.com/shard/s22/sh/5300869b-db59-4c42-90c4-b55dbe15d820/47af9f355dac1d7536586091d875ac8f/deep/0/Level-01.unity---UnityNightmare---Web-Player.png)

# Phase 6 プレイヤーヘルス 21分

[Unity - Player Health](http://unity3d.com/learn/tutorials/projects/survival-shooter/player-health)

slide 1

- Scripts > Player フォルダから PlayerHealth を探す
- ヒエラルキーのPlayerにドロップ 
- PlayerHealth スクリプトを開いて確認
- Unityに戻る

slide 2

- PlayerHealth (Script) コンポーネントの HealthSlider にヒエラルキーから Health Slider　をドロップしてアサイン
- 同じようにDamageImageをDamage Imageにアサイン

![](https://www.evernote.com/shard/s22/sh/28a36978-acb0-4aa5-87f9-d45cb6e696c6/5e785f6e2ec65c2d02bf05fdb07da3e5/deep/0/Level-01.unity---UnityNightmare---Web-Player.png)

slide 3

- PlayerHealth (Script) コンポーネントにPlayer Death audio clip を Death Clip にアサイン。◯選択をクリック。
- EnemyAttack を Scripts > Enemy フォルダから探し、ヒエラルキーの Zombunnyにアタッチ

slide 4

- EnemyAtackスクリプトを開く 
- Unityに戻る 
- シーンを保存 

![](https://www.evernote.com/shard/s22/sh/0d813cb2-887b-45fd-8352-826cee889a5f/68d233a4bb23618ee6cf469f49e790dd/deep/0/Level-01.unity---UnityNightmare---Web-Player.png)

死ねるようになった。

https://www.youtube.com/watch?v=iulUv9rN6Sk&feature=youtu.be

# Phase 7 敵をやっつける 55分

[Unity - Harming Enemies](http://unity3d.com/learn/tutorials/projects/survival-shooter/harming-enemies)

slide 1

- Scripts > Enemy フォルダから EnemyHealth を探す
- ヒエラルキーのZombunny にドロップ 
- Enemy Health (Script) コンポーネントのZombunny death clip を Death Clip にアサイン 
- EnemyHealth スクリプトの内容を確認
- Unityに戻る

slide 2

- EnemyAttack スクリプトを開く
- 13行目と22行目の // を消しコメントを外す
- 49行目のコメントを外し、保存しUnityへ戻る
 
```CSharp:enemyHealthの行が増える
    Animator anim;
    GameObject player;
    PlayerHealth playerHealth;
    EnemyHealth enemyHealth;
    bool playerInRange;
    float timer;


    void Awake ()
    {
        player = GameObject.FindGameObjectWithTag ("Player");
        playerHealth = player.GetComponent <PlayerHealth> ();
        enemyHealth = GetComponent<EnemyHealth>();
        anim = GetComponent <Animator> ();
    }
```

```CSharp:enemyHealthの判定を増やす
    void Update ()
    {
        timer += Time.deltaTime;

        if(timer >= timeBetweenAttacks && playerInRange && enemyHealth.currentHealth > 0)
        {
            Attack ();
        }

        if(playerHealth.currentHealth <= 0)
        {
            anim.SetTrigger ("PlayerDead");
        }
    }
```

slide 3

- Prefabs フォルダの GunParticles を選択
- Particle System の右端の歯車のアイコンをクリック、Copy Component　を選択
- ヒエラルキーの Player を展開し GunBarrelEnd を選択
- どれかの歯車をクリックし Paste Component as New を選択

![](https://www.evernote.com/shard/s22/sh/dfe92223-92ee-45df-9742-572a66844767/e1edb6760efd859309d15da5fbde53ed/deep/0/Level-01.unity---UnityNightmare---Web-Player-と-Unity4.6のチュートリアルをやってみる(更新中).png)

slide 4

- Particle System コンポーネントを折りたたんでおく
- GunBarrelEnd を選択したまま Add Component > Effects > Line Renderer 
- Materials エリアを展開し◯アイコンをクリックし、LineRenderMaterial を選択

![](https://www.evernote.com/shard/s22/sh/453566cf-d37e-41ef-9a7d-46c732132909/4ec599c7459e3d9a660e0844a8192514/deep/0/Level-01.unity---UnityNightmare---Web-Player.png)

slide 5

- Line Renderer のParametersを開き、Start Width と End Width を 0.05 に 
- Line Renderer コンポーネントのチェックを外し、無効にする

![](https://www.evernote.com/shard/s22/sh/9b9c3c47-1950-4feb-ae27-dbb9685d3388/86a05dffc381983c3ce601c7e8250ed2/deep/0/Level-01.unity---UnityNightmare---Web-Player.png)

slide 6

- Add Component > Rendering > Light
- Color block / Picker から黄色い色を選択
- Light コンポーネントのチェックを外し無効化 
- Add Component > Audio > Audio Source
- Player Gunshot クリップを◯アイコンをクリックして選択 
- Play On Awakeのチェックを外す

![](https://www.evernote.com/shard/s22/sh/9c7b8719-5495-4ea5-820d-ba7852a13c97/efc3f64c2753aaeca7a57e3b17693bf4/deep/0/Level-01.unity---UnityNightmare---Web-Player.png)

slide 7

- Scripts > Player フォルダの PlayerShooting を GunBarrelEnd にアサイン 
- PlayerShooting スクリプトを開く
- Unityへ戻る 
- ヒエラルキーの Playerを選択し　インスペクタ上部の Apply をクリックして更新をプレハブに反映

![](https://www.evernote.com/shard/s22/sh/516b83af-485b-40ab-aef0-9584e247cff9/743de920ebd5ed9c6e6ce839f134a60b/deep/0/Level-01.unity---UnityNightmare---Web-Player.png)

slide 8

- シーンを保存
- Playをしてテスト 
- 敵を倒すとエラー発生。 Scripts > Enemy フォルダの EnemyMovement を開く
- // でコメントアウトされているところを全て解除し、保存


```CSharp:コメントを解除した後 
public class EnemyMovement : MonoBehaviour
{
    Transform player;
    PlayerHealth playerHealth;
    EnemyHealth enemyHealth;
    NavMeshAgent nav;


    void Awake ()
    {
        player = GameObject.FindGameObjectWithTag ("Player").transform;
        playerHealth = player.GetComponent <PlayerHealth> ();
        enemyHealth = GetComponent <EnemyHealth> ();
        nav = GetComponent <NavMeshAgent> ();
    }


    void Update ()
    {
        if(enemyHealth.currentHealth > 0 && playerHealth.currentHealth > 0)
        {
            nav.SetDestination (player.position);
        }
        else
        {
            nav.enabled = false;
        }
    }
}
```

slide 9

- Scripts > Player フォルダの中の PlayerHealth を開く
- // を全て解除し保存
- Unityへ戻る
- テストプレイ

![](https://www.evernote.com/shard/s22/sh/ed88f2e7-59ac-4784-beed-09a1bc255838/1e1e25223bdf6985f43894c141bd3e6e/deep/0/Level-01.unity---UnityNightmare---Web-Player.png)

発砲して敵が倒せる。

https://www.youtube.com/watch?v=QD0LCeVgJtc&feature=youtu.be


# Phase 8 得点をつける 20分

[Unity - Scoring points](http://unity3d.com/learn/tutorials/projects/survival-shooter/scoring-points)

slide 1

- ヒエラルキーの HUDCanvas を右クリック create UI > Text as a child game object 
- TextオブジェクトをScoreText にリネーム
- アンカーを中央、上に設定 
- Position X を 0 に Position Y を -55

![](https://www.evernote.com/shard/s22/sh/80d25a82-899d-4ce4-bf1b-933334e1c7f4/ecb2cd0c2e7d4722d3fd045e21a192d1/deep/0/Level-01.unity---UnityNightmare---Web-Player.png)

slide 2

- Width を 300 、 Height を 50 
- Text コンポーネントのText を “Score: 0” に。 
- Font　を丸アイコンをクリックして Luckiest Guy に
- Font size を 50
- Alignments を Center and Middle 
- Color を 白に

![](https://www.evernote.com/shard/s22/sh/3ca887d0-1bd2-4698-bd15-58d8d753efc1/e5bbbac5b9834c722e0ed5037fbff9d2/deep/0/Level-01.unity---UnityNightmare---Web-Player.png)

slide 3

- Add Component > Shadow component (Shadowとタイプ) Effect Distance values を (2, -2) に。
- Scripts > Managers フォルダから ScoreManager を探し、ScoreTextゲームオブジェクトにドロップ
- スクリプトを開いて確認し、Unityへ戻る

slide 4

- ヒエラルキーの Zombunny の EnemyHealth (script) を開く。
- 77行目の // を外し StartSinking() を有効化 
- スクリプトを保存しUnityへ戻る

slide 5

- テストプレイ 
- Zombunny ゲームオブジェクトを Prefabs フォルダにドラッグしプレハブ化する
- ヒエラルキーから Zombunny オブジェクトを削除 
- シーンを保存

テストプレイの段階で敵を倒すと点数が入るように。

https://www.youtube.com/watch?v=oNHL2mTxlaw&feature=youtu.be


# Phase 9 もっと敵を 34分

[Unity - More Enemies](http://unity3d.com/learn/tutorials/projects/survival-shooter/more-enemies)

slide 1

- Prefabs フォルダの中の Zombear を選択 
- Zobear の Animator コンポーネントを展開
- Animation フォルダの EnemyAC Zombearの Animator Controllerプロパティにドロップ

slide 2

- Prefabs フォルダの Hellephant を選択
- Animation フォルダをクリックし、 Create > Animator Override Controller 
- HellephantAOC にリネーム
- EnemyAC を Controllerにアサイン

![](https://www.evernote.com/shard/s22/sh/d0f5cc61-f303-459a-af58-d0b24447e3bf/84fafac1d3e8fc5792367063b1102a92/deep/0/Level-01.unity---UnityNightmare---Web-Player.png)

slide 3

- Models > Characters フォルダの Hellephant を展開しアニメーションクリップを表示 
- Idle, Move Death を HellephantAOC の対応する Override Tableにドラッグ
- Prefabs の Hellephant を選択し HellephantAOC を Animator Controller にアサイン

![](https://www.evernote.com/shard/s22/sh/2ed8ed4d-7ed7-4826-88db-ad25a6e8e55a/902803fb1ee118783dfe6e819af5e1ff/deep/0/Level-01.unity---UnityNightmare---Web-Player.png)

slide 4

- GameObject > Create Empty し EnemyManager にリネーム
- Scripts > Managers フォルダから EnemyManager を探し、EnemyManagerオブジェクトにドロップ
- EnemyManager 開いて確認し、戻る

slide 5

-  GameObject > Create Empty とし ZombunnySpawnPoint にリネーム
- インスペクタの箱アイコンをクリックし ZombunnySpawnPoint に青を選択
- Transform > Position を (-20.5, 0, 12.5) 
- Transform > Rotation を (0, 130, 0)

![](https://www.evernote.com/shard/s22/sh/d7e5ca39-bf85-416f-a9b8-d55dad5a8970/e6dab7cd91533d5d3338fd0d538cb721/deep/0/Level-01.unity---UnityNightmare---Web-Player.png)

slide 6

- GameObject > Create Empty とし ZombearSpawnPoint にリネーム
- インスペクタのギズモをクリックし ZombearSpawnPoint をピンクに
- Transform > Position を (22.5, 0, 15) 
- Transform > Rotation を (0, 240, 0)

![](https://www.evernote.com/shard/s22/sh/8e2c411c-2c4c-455e-b23b-7f862d93c3c8/aa3835797ad1bd775617805990eb7a62/deep/0/Level-01.unity---UnityNightmare---Web-Player.png)

slide 7

- GameObject > Create Empty とし HellephantSpawnPoint にリネーム
- インスペクタのギズモをクリックし HellephantSpawnPoint を黄色に
- Transform > Position を (0, 0, 32) 
- Transform > Rotation を (0, 230, 0)

![](https://www.evernote.com/shard/s22/sh/8f302947-b3f7-4e11-a36f-c45ef7d78f22/0424e9abf577ee84d5cca54ce8155ccf/deep/0/Level-01.unity---UnityNightmare---Web-Player.png)

slide 8

- ヒエラルキーの EnemyManager を選択し EnemyManager コンポーネントの PlayerHealth にPlayerをアサイン 
- Zombunny を Enemy プレハブからアサイン
- Spawn Time が 3 seconds であることを確認

![](https://www.evernote.com/shard/s22/sh/1d2e9cf0-c659-4703-a7a2-304de4f89644/989c6b63c607ad6847bf5cc6a9ceb842/deep/0/Level-01.unity---UnityNightmare---Web-Player.png)

slide 9

- ヒエラルキーのZombunnySpawnPoint を SpawnPoints array にドロップ 
- シーンを保存 
- テストプレイ

ウサギが画面左上の物陰から湧いてくるようになる。

https://www.youtube.com/watch?v=ZbfIOMqW80o&feature=youtu.be

slide 10

- Scripts > Managers フォルダから EnemyManager を探し、EnemyManagerオブジェクトにあと2回ドロップする
- EnemyManager オブジェクトが EnemyManager コンポーネントを3つ持っている事を確認

![](https://www.evernote.com/shard/s22/sh/7f748978-3d6c-453a-9796-b5d7d8d29844/8a3f37d888909dfff084711dce15d311/deep/0/Level-01.unity---UnityNightmare---Web-Player.png)

slide 11

- Playerゲームオブジェクトを PlayerHealth にそれぞれアサイン 
- Prefabs フォルダから Zombear を 2番めのManagerのEnemy にアサイン。
- Prefabs フォルダから Hellephant を 3番めのManagerのEnemy にアサイン。

![](https://www.evernote.com/shard/s22/sh/e73fff1c-7dcb-4a98-8d67-889749803c59/0e20dffa76ecc4ddbc69a60381f8767b/deep/0/Level-01.unity---UnityNightmare---Web-Player-と-Unity4.6のチュートリアルをやってみる(更新中).png)

slide 12

- ヒエラルキーのZombearSpawnPoint 2番めのEnemyManagerのSpawnPointsにアサイン
- ヒエラルキーのHellephantSpawnPoint 3番めのEnemyManagerのSpawnPointsにアサイン

![](https://www.evernote.com/shard/s22/sh/f223d3a6-7e17-472c-adc9-017c8af828fd/6d5d8bc6da95a8f0cc4e320d1fac26f8/deep/0/Level-01.unity---UnityNightmare---Web-Player-と-Unity4.6のチュートリアルをやってみる(更新中).png)

slide 13

- 3番目のEnemyManagerのSpawn Time を 10 (Hellphant用)
- シーンを保存
- テストプレイ

かなり賑やかに！

![](https://www.evernote.com/shard/s22/sh/8c0a8807-639b-4714-8130-1ea00049601a/406a25c2f6c33f9cddc7281c6ad6ecbf/deep/0/Level-01.unity---UnityNightmare---Web-Player.png)

https://www.youtube.com/watch?v=s0ebWilKc-A&feature=youtu.be


# Phase 10 ゲームオーバー 36分

[Unity - Game Over](http://unity3d.com/learn/tutorials/projects/survival-shooter/game-over)

slide 1

- HUDCanvas を右クリックし、create a UI > Image 
- ScreenFader にリネーム
- Rect Transform componentのアンカーを Altを押しながら Stretch both に設定 
- Image component,Color block を 薄い青に

![](https://www.evernote.com/shard/s22/sh/74394319-0a80-4c93-98ba-129b86ae71bf/74b5088d41e1e5ca651122a00afb9f24/deep/0/Level-01.unity---UnityNightmare---Web-Player-と-Unity4.6のチュートリアルをやってみる(更新中)-と-Kobito-と-Inbox-(9)---yando@engineyard.com---Engine-Yard-Mail.png)

slide 2

- HUDCanvas を右クリック create a UI > Text 
- GameOverText にリネーム
- Rect Transform component の アンカーを Altを押しながらクリックし Middle center に 
- Width を 300 、 Height を 50

slide 3

- TextコンポーネントのTextを‘Game Over!’ 
- Font を Luckiest Guy に
- Font Size を 50 Alignment を Middle and Center 
- Color を白に。
- Add Component > Shadow (Shadow とタイプ)

![](https://www.evernote.com/shard/s22/sh/f375bce4-7430-48e1-8346-6dfcd4dfd65c/65a2cbbf321e8f60c062d1fd94de22e6/deep/0/Level-01.unity---UnityNightmare---Web-Player.png)

slide 4

- HUDCanvas の子オブジェクトを並び替えて次の順番に。
- HealthUI
- DamageImage
- ScreenFader
- GameOverText
- ScoreText

![](https://www.evernote.com/shard/s22/sh/c8bac667-b725-44c6-a501-d177067fd476/504548f4b3743eb85a205490cd531abc/deep/0/Level-01.unity---UnityNightmare---Web-Player-と-willgoldstone.com-utd2014.pdf.png)

slide 5

- ヒエラルキーのScreenFaderを選択 
- Colorのalpha を 0 に 
- ヒエラルキーのGameOverTextを選択 
- Colorのalpha を 0 に

slide 6

- ヒエラルキーのHUDCanvas を選択 
- Window > Animation を開く 
- Add Curve ボタンをクリック 
- Create Animation ダイアログでAnimation フォルダを選択し、クリップをGameOverClipとする。 (Animator Controllerも同時に作成される。)

![](https://www.evernote.com/shard/s22/sh/d27a79b1-afff-438d-bc3f-894441f821f7/a37d589400dd4d087e385612021397a4/deep/0/Create-New-Animation.png)


![](https://www.evernote.com/shard/s22/sh/da47dc5c-86d1-4ba5-a078-b8216dd1f034/2052d87a8401f90b7840a98fb8653c89/deep/0/Level-01.unity---UnityNightmare---Web-Player-と-Unity4.6のチュートリアルをやってみる(更新中)-と-Kobito-と-Echofon.png)


slide 7

- Add Curve for GameOverText > Text > Color 
- Add Curve for GameOverText > RectTransform > Scale 
- Add Curve for ScreenFader > Image > Color 
- Add Curve for ScoreText > RectTransform > Scale 
- 全てのキーフレームを 0:30 へ。

![](https://www.evernote.com/shard/s22/sh/2c0827aa-4521-4c81-8f27-c55720972492/25b4a7897e73f3840c2fd041baaac3b9/deep/0/Level-01.unity---UnityNightmare---Web-Player.png)

slide 8

- playheadを0:20へ移動し、GameOverText > RectTransform > Scale curve を選択し K を押して Add Keyframe する。 
- フレーム0に移動し、GameOverText > RectTransform > Scale を選択、値を 0 にインスペクタで設定

![](https://www.evernote.com/shard/s22/sh/ccf8a827-2950-4560-9660-ac292dd57e9f/9514f487d95b49015f16507265b1f21a/deep/0/Level-01.unity---UnityNightmare---Web-Player.png)

slide 9

- playheadを0:20へ移動し、 GameOverText > RectTransform > Scale を 1.2 にインスペクタで設定。
- playheadを0:30へ移動し
- GameOverText > Text > Color > Alpha を 1
- ScreenFader > Image > Color > Alpha を 1
- ScoreText > RectTransfrom > Scale を 0.8

![](https://www.evernote.com/shard/s22/sh/31dcf317-d174-41d5-b457-a39e5ed9c40a/c5eb9990b4df21759d693c9ddd4c9e3e/deep/0/Level-01.unity---UnityNightmare---Web-Player.png)

slide 10

- 全てのキーフレームを選択し 1:30 (frame 90) から開始するように移動。 
- Record modeを終了。録画ボタンを押す。

![](https://www.evernote.com/shard/s22/sh/ff568e83-26da-4226-b039-14fa7ff52909/cd7dfce78c0edf176aa884e5c5a72839/deep/0/Level-01.unity---UnityNightmare---Web-Player.png)

slide 11

- Animation フォルダの GameOverClip　を選択し Loop time のチェックを外す 
- Animation フォルダの HUDCanvas animator controller を選択 
- ダブルクリックして開く。

![](https://www.evernote.com/shard/s22/sh/81714327-c065-4599-8d82-30ce3dc7babe/d96ba63c8b0c010ab7848dda836de324/deep/0/Level-01.unity---UnityNightmare---Web-Player.png)

slide 12

- Animator ウインドウの空白を右クリックし Create State > Empty 
- Emptyにインスペクタからリネーム
- Empty state を右クリックし Create Transition を GameOverClip へ。 
- Trigger parameter を作成し、GameOverとする。

![](https://www.evernote.com/shard/s22/sh/ab8d89c4-2e8d-4852-8294-1cdb945651ea/66b60cf6986ae8fbaad7bb5688f1f101/deep/0/Level-01.unity---UnityNightmare---Web-Player.png)

slide 13

- Empty ステートを右クリックし、Set As Default する。
- Empty から GameOverClip へのトランジションを選択
- Condition を GameOverに設定 
- ヒエラルキーのHUDCanvasを選択し、 Scripts > Managers フォルダの中の GameOverManager を  HUDCanvas にアサイン

![](https://www.evernote.com/shard/s22/sh/60dfb5a1-6d70-4b8d-a595-3946a300553b/fc803ee10185590ba7c691eed9209ba3/deep/0/Level-01.unity---UnityNightmare---Web-Player.png)

slide 14

- Scripts > Managers フォルダの中の GameOverManager を確認する。 
- Unityエディタに戻る
- ヒエラルキーのPlayerを Game Over Manager (Script) の　Player Healthにドロップ

![](https://www.evernote.com/shard/s22/sh/40210557-43df-4475-8235-a4e57a2d8a65/6922af88f26ecc154e4f59d89f30c08c/deep/0/Level-01.unity---UnityNightmare---Web-Player.png)

slide 15

- シーンとプロジェクトを保存
- Play
- ゾンビトイを撃ちまくる！

https://www.youtube.com/watch?v=SbEC2iPzDHM&feature=youtu.be

# Phase 11?

さらに調整する延長線

slide 1

- ヒエラルキーの EnemyManager を選択 
- Zombunny と Zombear の Spawn Time values を 1 
- Hellephant Spawn Time value を 3 
- Prefabsの中のZombunny を選択。Nav Mesh Agent の Speed を 4 
- Zombear prefabも同様

slide 2

- Prefabsの Hellephant を選択、 Nav Mesh Agent の Speed を 4 
- ヒエラルキーのPlayerを展開 GunBarrelEnd を選択
- Player Shoot (Script) の Damage Per Shot を 15 、 Time Between Bullets を 0.05