Unity VR アプリ開発入門 5-2 VRShootingをやってみる

#VRでシューティングゲームをつくる

このページでは、[大島・松島・河野：Unity VR アプリ開発入門 技術評論社(2018)](https://gihyo.jp/book/2018/978-4-297-10105-3/support)を出版から3年経った、2021年11月頃から５章以下を実施した記録です。現在の2021年にやってみるとUnityいろいろとかわっているので、それに対応しながら実践していく。本の中の間違いなどもいくつか発見したので、メモをしている（読みにくいと思いますが。。。参考にしてください）
<img width="200" alt="Book" src="http://image.gihyo.co.jp/assets/images/cover/2018/9784297101053.jpg">

##2022/01/11 動かない原因を探る
- ビルドとランができたが，動かなかったので，その原因を探ってみた
- P.300 8-2-1 [2] でPointerに動きを設定するUISliderHandleの設定が間違っているような気配あり
- その点を修正して，ビルドできることは確認できた
- 次回時間のある時　Oculusに接続して　動かしてみようと思う

##2022/01/01 OculusでVR化に進む！
- ゲームとしてはできたので,ここからは 本のフォローはやめて，コリンさんのYouTube動画に沿ってOculusでVR化を目指す
- 元ネタの[YoutTube動画のこりんさん部分（１時間２０分ぐらいのところから）](https://youtu.be/37I1ZATbGew?t=4796)に沿ってやってみようと思う
- Build setting > Platform > android 
- 同上＞Texture Compression > ASTC
- Player setting > アンドロイドマーク > Other setting > linear
- 同上 Vulkan < 削除
- 同上 PackageName > minimum APL Level 23
- 同上 Script Backend > IL2CPP
- Oculus Integration のステージング（VoiceもOFFにした）
- <img width="200" alt ="setting" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/237044/4de5ee75-e09a-8d9e-6ce4-e26963342a49.png">
- OpenXRに対応するためアップグレードして，Unityを再起動した．
- XR Manegement 4.1.0 をインストール
- Oculus XR Plugin 1.10.0 をインストール
- Edit > Project Settings > Oculus
- Build できて，Oculusで実行できたが，Gunを動かせない．
- 銃の動きを　Oculusから取得するように変更する必要がるようだ．

##2021/12/28 8-2-3 Start
- 8-2 Done
- ポインターを使ってRetryできるようになった

##2021/12/13 8-2 Start
- 8-2-1 にある　2D Object は　unity2020から　インストールする必要があるらしい
- Package Managerから2D Spriteをインストール](https://raspberly.hateblo.jp/entry/9slicingSprites#2D-Sprite%E3%83%91%E3%83%83%E3%82%B1%E3%83%BC%E3%82%B8%E3%81%AE%E3%82%A4%E3%83%B3%E3%82%B9%E3%83%88%E3%83%BC%E3%83%AB)

##2021/12/08
- 8-1を読んだ

##2021/12/07 再開（仕事，立て込んでました）
- P284 7-4-4 から再開
- GameStateController.csの内容が本の内部では完結していないので，困った．
- また，一部　動作がおかしい ~~（ゲームスタートしていないのにタイマーが動作してしまっている）~~
- ヒエラルキーウインドウで　RemainTimerとGunPlayerを非表示にしたら，それらしい画面遷移になった．
- 上のような不具合は残っているが，一旦　7章完了

##2021/11/26　
- P280から再開
- Script「SceneChanger」を作成
- Retry ボタンを押すと　残り時間がリセットされるようになった。
- Script「ResultScore」を作成
- 7-4-3まで進んだ

##2021/11/25夜　スタートと結果の表示を作ってみよう　
- 7-4 突入
- P271 GameReadyのCopyは Duplicateを使った（Copyだと、ヒエラルキーWindowの階層がずれるため）
- P279 まで終了、このあとは、いっぱいScriptを書くみたい。。。

##2021/11/25朝　スコアの導入
- 7-3 突入
- テキストP265 プログラムリスト37~38 赤枠で囲うべき
- 敵をやっつけると得点が１点づつ加点される様になった
- ![スクリーンショット 2021-11-25 5.46.25.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/237044/22edddef-b9ea-5cb6-61d7-88a1c0d96abe.png)


##2021/11/24 残り時間の表示
- 7-2-2 残り時間のカウントができるようになった
- P256 コンポーネントの付与先が不明瞭に感じた「Text」オブジェクトにRemainTimerのScriptを付与しないといけない。

##2021/11/23 UIの学習
- 7-1 終了
- 7-2-1 Canvas のPosが変更できなかったので　[この記事](https://detail.chiebukuro.yahoo.co.jp/qa/question_detail/q11230875526)　のお世話になった。
- RenderModeをWorldSpaceにして入力できるようになった。
- RenderModeをWorldSpaceにしたらカメラの設定枠にワーニングが出たので、CameraをヒエラルキーWindowかドラッグした。
- テキストP256 [3]TextのRect Transformとあるが、CanvasのRect Transformと思われる。
- 図7.38がCanavsのプロパティーの図になっているのが、正しいと思われる。

##2021/11/19 BGMの設定後、７章に突入！
- 6-5-3 BGMの設定して、ゲームらしくなった
- 7-1-2 Textの前までを読んだ

##2021/11/17 敵の出現と廃棄時に音を使い分けて再生する
- 6-5-3
- 敵が出現したら音がなり、敵をやっつけても音が鳴るようになった

##2021/11/16　発弾時と着弾時に演出が再生さ、音もなった
- 6-4-3~6-5-2
- HitParticlesのプロパティにScriptが割り当てられていて、ワーニングがでた。
- テキストのDownLoadサイトから得たデータをつかっているため、将来割り当てるScriptがすでに付与されていたためか？
- 一旦、HitParticlesに付与されていたScriptをRemoveしたらワーニングがなくなった。
- 6-5 音を入れてみように進む
- 6-5-2 を完了して音も鳴るようになった。 
##2021/11/15 
- 6-4-2
- 弾を発射したときにガンの先端から光のような演出が再生された
- 実行時にVisual Studio EditorをUpdateするように薦めるワーニングがでた。
- 自力でpackage Manager を開いてUpdateが初めてできた。

##2021/11/14 パーティクルについて学ぶ
- 6-4-1 パーティクル演出を再生した
 
##2021/11/11 敵をランダムに出現させてみた
- 6-3 を無事に終了。５箇所から３秒間隔で突然、敵が現れる。敵は、動かない。。。
- ![スクリーンショット 2021-11-11 5.35.58.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/237044/cacdbec1-e4ef-bfa9-4e86-1f659f404650.png)


##2021/11/10　敵に当たり判定をつける。6-2節無事に終了
- 6-2-2~6-2-4
- ~~衝突まで順次実装していったが、弾が敵にあたってもオブジェクトが廃棄されない。~~
- ~~どこか、まちがったかな。。。~~
- C#を編集して、保存をしていなかった。上書き保存後、実行したら、オブジェクトが廃棄された！
- 6-2節終了！

##2021/11/08 弾の消滅と敵の設置
- 6-1-5~6-2-1
- AutoDestroyというScriptで弾が５秒で自動消滅するようにした
- ゾンビを３体設置した

![スクリーンショット 2021-11-08 5.36.21.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/237044/72bdbd6f-9ee3-5f52-a201-5e09e77771d9.png)


##2021/11/07 弾を発射する
- 6章が始まった。6-1~6-1-4
- 弾のプレハブをつくってた。
- ShooterというScriptを書いた。
- GunBGunBarrelEndというオブジェクト？が自作のGunPlayerには無く、困る。。。
- そのため書籍のページでダウンロードしたファイルからPlayerとFloorをUnityにドラッグ＆ドロップしたら追加できた！（2021/10/30に気づいていればよかったが。。。）
- 追加できたので、GunPlayerとFloorを定義し直した。
- クリックしたら　飛んでいかない弾が生成された
- ![スクリーンショット 2021-11-07 5.19.21.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/237044/1ae184eb-f480-f3a1-891b-827dbac12c70.png)
- Bullet.csというScriptを書いてBulletハブにScriptを付与したら飛んでいくようになった！


##2021/11/06 Camera RotatorというScriptをCameraに付与した
- Scriptの入力が大変そうなので[書籍のサポートページ](https://gihyo.jp/book/2018/978-4-297-10105-3/support)からダウンロードした。
- 実行することでカメラの方向がキー入力に応じて回転するようになった。
- 今日で５章がおわった。次からは６章です！
- ![スクリーンショット 2021-11-06 5.35.15.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/237044/285b4d95-f509-e5d5-a49f-f356a67f681f.png)



##2021/11/05 ExampleというScriptを書いた
- 実行すると Consoleに[Strat]
- スペースキーを押すと [Update]Space key pressed が表示された

```Example.cs
using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class Example : MonoBehaviour
{
    // Start is called before the first frame update
    void Start()
    {
        Debug.Log("[Start]");
    }

    // Update is called once per frame
    void Update()
    {
        if (Input.GetKey(KeyCode.Space))
        {
             Debug.Log("[Update] Space key pressed");
        }
    }
}

```

##2021/11/04 Floorを作り、Gunを配置した
- Floorは読み込んだアセットのなかになかったので、GameObject>Planeでつくった。テクスチャをアセットの中にある緑色を適用した適当に選んで
- GunはWeaponのなかにあったので、配置した。適当な位置に映り込むようにPositonを調整した
- ![スクリーンショット 2021-11-04 5.56.14.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/237044/34a608c6-69a2-cd28-cacf-0f7ca0132de5.png)


##2021/11/03 別のアセットを読み込んでみようと頑張る
- Unity Asset StoreやGoogle検索したが、Survival Shooting Tutorialの情報が殆どない
- 同じチュートリアルをみつけることを諦めて、Unity Technologiesが提供している他の無料アセットで無理やり勧めてみようと思う（大丈夫かな？）
- [FPS Microgame](https://assetstore.unity.com/packages/templates/fps-microgame-156015)というのでやってみる
- Add to My Assetをすると追加されたよう、Open in Unity をくりっくしたら、Package Managerが開き、FPS Microgameが追加されていた
- Package Manager WindowでFPS Microgameを選択したら右下に小さくDownloadの文字があったので押してみたら、進んでいく感じがあった。
- 途中、依存性のワーニングがでたがInstall/Upgradeを炎嵐で進んだら、テキストに似たImportを選択する画面が現れた。
- 以下のようにテキストに合わせてそれらしいものだけImportしてみた。
- ![スクリーンショット 2021-11-03 6.22.27.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/237044/33932360-f834-a937-f2a6-68cf7a3705ec.png)
- Project Windowに以下のようにImportされた。これでテキストのP.140 図5.10に似た感じになったかな。
- ![スクリーンショット 2021-11-03 6.28.52.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/237044/12cc67d2-b2fa-018d-84c6-a553306f0d20.png)



 
##2021/10/30 早速悩まされる
- Asset Store が推奨されなくなり、Packge Managerでインポートするようになっている。
- そのため早速アセットが読み込めず、壁にあたる。。。
- 以下のようなサイトで勉強し直して、再トライするしかないのか。。。
- いろいろググった一覧
 - https://learn.unity.com/project/survival-shooter-tutorial
 - https://framesynthesis.jp/tech/unity/oculusquest/
 - https://lifenolabo.com/unity-tutorial-survival-shooter/

##2021/10/29 Create Project
- [大島・松島・河野：Unity VR アプリ開発入門 技術評論社(2018)](https://gihyo.jp/book/2018/978-4-297-10105-3/support)
- 発売後 ３年経っているが,5-2を今のバージョンのUnity、Oculus Questでやってみる
- Unity 2021.1.27f1 3D VRShooting でプロジェクトをつくった