だんしん

画面タップでカメラを切り替える アンドロイド unity

vjっぽく、音に合わせて映像を操作したい、

画面を九つに分割して透明ボタンをつけようと思う

左の三つはカメラ制御にしよう

横、回転、前

中三つ
登場人物のアクション、
小、中、高

右三つ
ライティング、ステージの演出
暗い、普通、派手

って感じを目標に。

カメラ制御

virtualcameraをタイムライン制御で動かそうと思う。

virtualcamela二個置いたらnoiseが利かなくなった。
なぜ

handheld extrime にしたら謎にグルグル動く。

一度けしてvirtualcamera配置しなおしたら治った。

ボタンの大きさの調節の仕方とかを調べる。
[Unity] Button をCanvasに設置する

https://uni.gas.mixh.jp/unity/button.html

このとおりにやったらエラー出た。
ボタンのadcompornentから空のスクリプト追加して
かいたらうまくいった。


【Unity】UIを端末に合わせたサイズに調節する

https://dojican-lab.blogspot.com/2015/08/unity.html

カメラの切り替え、3パターンのアングル、
ボタンクリックのところにカメラ切り替えのスクリプト。
vcamを三つつくって、それをオンオフすればいいと思う。

【Unity】オブジェクトの表示・非表示をSetActiveでする方法【スクリプトあり】
https://miyagame.net/setactive/

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

public class botan1no1 : MonoBehaviour {
   public GameObject itinoiti;
   public GameObject itinoni;
   public GameObject itinosan;

   // Use this for initialization
   void Start () {
		
	}

   public void BTonClick()
   {
       itinoiti.SetActive(true);
       itinoni.SetActive(false);
       itinosan.SetActive(false);
   }
}

これ書くのに40分くらいかかった。
スクリプト嫌い。

似たようなのをボタンにつけていく。

人物の動きanimatorで切り替える

animatorcontroller、大量の人を動かすのめんどそうだ。

【UnityC#講座】AnimatorControllerの使い方
https://unity-shoshinsha.biz/archives/705

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

public class botan2no1 : MonoBehaviour {

   public GameObject ninoiti;

   Animator animator;
   // Use this for initialization
   void Start()
   {
       animator = ninoiti.GetComponent<Animator>();
   }

   public void BTonClick()
   {
       animator.SetBool("ninoitiosu", true);
       animator.SetBool("ninoniosu", false);
       animator.SetBool("ninosannosu", false);

   }
}

みたいな感じのスクリプト書いた。
animation controller のトランジション、ボタン押したらすぐ反応するようにしたい場合はhas exit timeのチェック外す

派手な背景

背景の切り替え
出現するボールの大きさ

等をいじりたいと思う、


パーティクルとばすために、アセットストアで検索、

Simple Particle Pack使った。

標準のパーティクルアセットで

【Unity】パーティクルで紙ふぶきを散らす
http://tsubakit1.hateblo.jp/entry/2015/09/04/233000

この辺を見ながらnoiseとかのパラメーターをいじる

ボタンでオブジェクトごとオンオフ


ライトの色をランダム変化

スクリプトでライトをコントロールする
http://prince9.hatenablog.com/entry/2018/11/19/184813

intencityとcolorに時間制御でランダムな数値入れる

時間は0.1秒以上2秒以下で。


ライトカラー
https://docs.unity3d.com/ja/current/ScriptReference/Light-color.html

時間の処理

[Unity] 一定の時間間隔で処理を実行する方法まとめ(時間制御)
https://qiita.com/Nagitch/items/fb9157b1cb27f3d37696

Unity ランダムにカラーを生成する。その色をマテリアルに貼り付ける。
https://gist.github.com/hiroyukihonda/8430454


高彩度かつ高明度色をランダムに生成する
http://unity-yuji.xyz/random-high-saturation-brightness/

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

public class lightsousa : MonoBehaviour {

   Color GetRandomVividColor(float alpha)
   {
       Color c;
       float rnd = Random.value;
       if (rnd < 1f / 6f)
       {
           c = new Color(0f, 1f, Random.value, alpha);
       }
       else if (rnd < 2f / 6f)
       {
           c = new Color(0f, Random.value, 1f, alpha);
       }
       else if (rnd < 3f / 6f)
       {
           c = new Color(1f, 0f, Random.value, alpha);
       }
       else if (rnd < 4f / 6f)
       {
           c = new Color(Random.value, 0f, 1f, alpha);
       }
       else if (rnd < 5f / 6f)
       {
           c = new Color(1f, Random.value, 0f, alpha);
       }
       else
       {
           c = new Color(Random.value, 1f, 0f, alpha);
       }
       return c;
   }

   public float duration = 1.0F;
   public Color color0 = Color.red;
   public Color color1 = Color.blue;
   public GameObject slight;
   public Light lt;

   //制限時間とカウンター
   public float timeOut;
   private float timeElapsed;

   void Start()
   {
       //制限時間にランダムな数字
       timeOut = Random.Range(0.1f, 2f);

       //色切り替え時間にもランダムな数字

       lt = slight.GetComponent<Light>();
       duration = Random.Range(0.1f, 2f);

   }
   void Update()
   {
       float t = Mathf.PingPong(Time.time, duration) / duration;
       lt.color = Color.Lerp(color0, color1, t);


       //制限時間に到達するまでにやる処理
       timeElapsed += Time.deltaTime;

       if (timeElapsed >= timeOut)
       {
           // Do anything
           //色と時間を入れなおす

           color0 = GetRandomVividColor(1.0f);
           color1 = GetRandomVividColor(1.0f);

           timeOut = Random.Range(0.1f, 2f);
           duration = Random.Range(0.1f, 2f);

           timeElapsed = 0.0f;
       }

   }
}

とりあえずやりたい感じのことができてよかった。

画面がまだ地味な気がするので、処理が軽くて派手な演出を考えたいところ。



いいなと思ったら応援しよう!