トマシープが学ぶ

Unity/VR/AR/デザイン好きのミーハー 記事内容は自分用のメモです

【unity1week】車窓がフローなドライビングデート【完成】

unity1weekのお題「Flow」の作品制作です。完成しました。

bibinbaleo.hatenablog.com

bibinbaleo.hatenablog.com

クエリちゃんの表情をランダムで変える

クエリちゃんのサンプルを見て、表情をどう変化させているのか確認しました。

f:id:bibinbaleo:20170824115351p:plain

まずクエリちゃん自身にQuery Emotional Controllerというスクリプトがついています。これは表情マテリアルを登録するスクリプトっぽい。

f:id:bibinbaleo:20170824115354p:plain

次にボタンのスクリプトGUI Controller」の中身を見ます。

Change Faceという表情を数字で変える関数を作り、updateの中でその関数を呼び出していました。

ということでそこらへんを組み合わせて、2秒ごとぐらいに表情をランダムで変えるスクリプトを作りました。

また落下(ゲームクリア)した時は目がぐるぐるになるようにしました。

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

public class facechange : MonoBehaviour {
    [SerializeField]
    protected GameObject queryChan;
    private float timeleft;
    // Use this for initialization
    void Start () {
        
    }
    
    // Update is called once per frame
    void Update () {
        timeleft -= Time.deltaTime;
        if (timeleft <= 0.0) {
            timeleft = 2.0f;
            if (ranking.rakka == 0) {
                int a = Random.Range (1, 24);
                ChangeFace ((QueryEmotionalController.QueryChanEmotionalType)a);
            } else {
                ChangeFace ((QueryEmotionalController.QueryChanEmotionalType)23);
            }
    }
    }
    void ChangeFace (QueryEmotionalController.QueryChanEmotionalType faceNumber) {

        queryChan.GetComponent<QueryEmotionalController>().ChangeEmotion(faceNumber);

    }
}

 何秒ごとに処理を行うかは下の記事を参考にさせていただきました。

qiita.com

あとはクエリちゃんのHead_02_MouthOpenを非表示にしないと口が動いてくれません。

f:id:bibinbaleo:20170824124231p:plain

今まで二重顎みたいに見えていたのこれのせいか。

あとFingerも3種類あるのでどれか一つだけを表示にしないと重なって表示されていました。

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

画面効果

Post processingを使って画面効果をつけていきます。

bibinbaleo.hatenablog.com

詳しい説明は上の記事で解説しています。

f:id:bibinbaleo:20170824202530p:plain 

f:id:bibinbaleo:20170824202543p:plain

こんな感じでつけました。上が効果付き。遠くをぼかして、ambient Occlusionという影がつく効果をつけ、あとはMotion Blurで動いたら勢い線が入っているような感じにしました。

ただこのままだとUIや別視線viewにも効果がついてしまったので、もう一つUIだけを写すカメラを作り、Clear Flagsを「Don't Clear」にして、Depthを1より大きくしてメインカメラより前に出します。メインカメラにはUIが写らないようにします。

NCMBのランキング

サンプルをunityで動かすまでは簡単にできました。

github.com

ただ自分のに組み込むにはまだ私の力では難しいかな〜

ゲーム性を思いついた!

前回も使った、オブジェクト間の距離を測るやつを使って、街のどこかにある目標オブジェクトに接触したらクリアにしたらいいではないか!

落ちてしまったらゲームオーバーってことにしたら今までのを生かせるし。

は〜天才だ。

距離のやつはほんとに単純なので、すぐに実装できました。シビアな衝突判定が入らない時は距離を使うべし。

Vector3 Apos = objA.transform.position;
Vector3 Bpos = objB.transform.position;
float dis = Vector3.Distance(Apos,Bpos);

こんな感じです。disに距離が入ります。publicでゲームオブジェクトをあてはめれば完成!

対象物は街アセットに入っていた祭り舞台にしました。ついでにそこから付属のわっしょい音声を流して車との距離で大きさが変わるようにしました。

f:id:bibinbaleo:20170824224831p:plain

UI作り

ゲームの方向性が決まるとタイトルとかも作りやすいですね。イラレでUIを作りました。こっちの方がフォント自由に使えるので楽。

f:id:bibinbaleo:20170824225002p:plain

完成! 

Matsuri City Driving | ゲーム投稿サイト unityroom - Unityのゲームをアップロードして公開しよう

f:id:bibinbaleo:20170827214718p:plain

今回もなんとか完成しました。

3回目ですが、毎回学びが多いです。

unityroom及びunity1週間ゲームジャムという場を作ってくださったnaichi様に感謝しています。

今回はassetモリモリで重いゲームを作ってしまったので、次回は2Dのシンプルなかっこいいやつを作りたいと思いつつ、3Dが好きなのでまた同じような感じになってしまいそう。