トマシープが学ぶ

Unity/VR好きのミーハー初心者 記事内容は自分用のメモ。何も求めないで

【Unity1week】ドライビングデート【迷走編】

 unity1week制作記事です。

前回ドライブデートの準備をしました。

bibinbaleo.hatenablog.com

今回は街を走らせたり、細々とした機能を付け加えます。ちなみにまだゲーム性はほとんどありません。やりたいこと詰め込んで迷走しています。

cubeを押したら音が流れる

車の中のボタンを押したら音楽が流れるというのを実装しました。

increment-log.com

qiita.com

上の二つを組み合わせました。

ボタンが押下判定はevent triggerというコンポーネントを使いました。UIに使うボタンクリックなどのシステムをゲームオブジェクトにも使えるというものです。

こんなのあったんだ!rayより簡単だし確実。

f:id:bibinbaleo:20170822120514p:plain

using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class audiostart : MonoBehaviour {
    private AudioSource bgm;
    // Use this for initialization
    void Start () {
        bgm = GetComponent<AudioSource>();
    }
    
    // Update is called once per frame
    void Update () {
        
    }
    public void OnMouseDown(){
        if (!bgm.isPlaying) {
            this.bgm.Play();
            // 再生中であれば停止
        } else {
            this.bgm.Pause ();
        }

}
}

 再生・停止の切り替えはこちらを参考にやりました。

gametukurikata.com

追記:あるゲームオブジェクトの子オブジェクトにしたら、クリックに反応しなくなりました。

街を入れる

ZENRINが出している福岡の街アセットを入れました。 

f:id:bibinbaleo:20170822143805p:plain

www.zenrin.co.jp

車を走らせる

スクリプトを使ったり、Navimesh使ったりと色々迷走していたのですが、最終的に車のアセットの中に走らせるモードが入っているのに気づきました。

昨日入れたこの車、unityのstandardasstに入っているものと同じでした!

昨日は純粋なモデルを入れていたのですが、prefabの中にCartoon-SportCar_Unity_setupという名前のものがあり、これを入れると矢印キーで動いたり、ブレーキもついていて、あとエンジン音とかも入っていました。神。

f:id:bibinbaleo:20170822144248p:plain

このままだと重力で落ちてしまうので、床にMesh Colliderをセットします。

私が入れている街のアセットはA~Iまでの地区に分かれておりその中にroadオブジェクトがそれぞれあるので全部にMesh Colliderをつけました。

f:id:bibinbaleo:20170822144446p:plain

これでピュンピュン走ります。カメラを車の後ろや中に設置して車のこオブジェクトにすると操作しやすいです。

f:id:bibinbaleo:20170822145403p:plain

Mapを写す

全体マップがあったほうがいいと思うので、新しくカメラを作って街を上から見下ろします。

そのカメラに新しく作ったrendertextureをセットします。

新しくマテリアルを作ってシェーダーをUnlit>Textureにします。

それにrendertextureをセットします。

そのマテリアルを新しく作ったUI>imageのmaterialにセットします。

f:id:bibinbaleo:20170822145748p:plain

Canvasをこんな感じに設定します。

f:id:bibinbaleo:20170822145852p:plain

imageの位置や大きさを動かして・・・できた!

f:id:bibinbaleo:20170822145911p:plain

現在位置を示す

マップが小さくて現在位置がわかりにくいので、マップカメラにだけ表示されるでっかい目印を作りました。

f:id:bibinbaleo:20170822150309p:plain

車の子オブジェクトにでっかいキューブを設置して、キューブのレイヤーを自分で作った何かにします。そしてメインカメラのclippingmaskから自分で作ったレイヤーを除きます。

f:id:bibinbaleo:20170822150533p:plain

f:id:bibinbaleo:20170822150528p:plain

綴り間違ってるの知ってる。

完成はこんな感じ。

Animated GIF  - Find & Share on GIPHYwww.giphy.com

本当はキューブじゃなくてスプライトイラストとかの方がいいよな〜

ということでスプライトにしました。

f:id:bibinbaleo:20170823162157p:plain

このクエリちゃんのロゴってこういう使い方していいのかな?

不安なのであとで別のに変えるかも。

ランキングに渡す部分

ランキング動作確認のために何か数値を渡したい。 

techacademy.jp

最初はTypeをTimeにして時間を送ろうとしたけど、やり方がよくわからなかったので、Time.deltaTimeを足していったものをintにした数値を数値データ(Number)として渡すことにしました。

車が地面から落ちてy座標が0以下になったら、その時までの数値を渡します。

qiita.com

・・・と思ったけど実装したらrankingシーンがずっと動き続けて数値が渡されないし、色々やったけどうまく行かないのでランキングは諦めます。

それか渡す数値の種類を変えるか?

とりあえずアップロード

完全に詰まったので、一旦現時点のものをunityroomにアップロードしました。webglのエラーがあるかもしれないし。

と思ったら本当にエラーが出て動かない!

f:id:bibinbaleo:20170823122816p:plain

Maximum call stack size exceededと出ています。

Javascript consoleもみてみたらランキング実装あたりで何か言われている?

f:id:bibinbaleo:20170823123009p:plain

blog.mudatobunka.org

よくわからないけど、今回はランキングは実装しないのでその部分を消して、アップロードしたら今度はちゃんと動いた。

というかbuild and runにしたらローカルで動作確認できるんだった。いつも忘れる。

最初のunityロゴの表示設定

ゲームが始まる前に表示されるunityロゴの表示を設定できるみたいなのでいじっていました。webGLのplayer settingのsplash Screenでいじれます。

f:id:bibinbaleo:20170823121750p:plain

背景の色を変えたり、自分の画像を使ったりできる!勝手にぼかしをかけてくれます。Previewボタンで確認

f:id:bibinbaleo:20170823122215p:plain

あとresolutionでスクリーンのサイズを設定するのも必要っぽい。

f:id:bibinbaleo:20170823121930p:plain

unityroomのデフォルトが960*540なのでそれに合わせた。

ゲームクリア・スタートシーン

前回・前々回とゲームクリア画面はシーン遷移を使って別のシーンに移動して表示していたのですが、他の方のゲームを遊んでいると、ゲームクリアしたら同じシーンの上「もう一度遊ぶ」ボタンを表示して、押すとリセットされる、という形式が多かったです。

あれってどうやるんだろうと思って調べたら、自分自身のシーンをシーン遷移で読み込めばリセットされるのか

negilab-unity.com

そのほかにもApplication.LoadLevel("scene");という関数もあるらしい。

qiita.com

こちらの記事のボタンの表示・非表示と組み合わせて、ゲームクリアしたらクリア画像を上に表示して、ボタンを押したら最初のシーンにリセットするようにしてみました。

qiita.com

f:id:bibinbaleo:20170823143522p:plain

画像はイラレで作りました。半透明の背景にしても、pngでスプライトに変換したらちゃんと適用されるんだ。

あとボタン画像もunityで色を変えることができる。

f:id:bibinbaleo:20170823151035p:plain

とりあえず完成

こちらから遊べます。

街から落ちたらゲームクリアです。

もうゲーム性なんてあってないようなもの。

他の人のを遊んで何か思いついたら実装します。

 

次完成編

bibinbaleo.hatenablog.com