一旦統合作業に入ります。
//tips
//関数がきちんと作動しているかの確認
動作の確認方法としてDebug.Logを使いこなすことが重要で、下記のスクリプトのVector3.Lerpがうまく機能していない場合にはDebug.LogにてVector3.Lerpの要素を確認することで状況を把握できる。
Debug.Log(startMarker.position + " " + endMarker.position + " " + present_Location);
(-13.7, 0.0, -38.7) (0.0, 0.0, -38.7) 0.3439157
UnityEngine.Debug:Log(Object)
Liner:Update() (at Assets/script/StageSelect/Liner.cs:32)
(-13.7, 0.0, -38.7) (0.0, 0.0, -38.7) 0.346985
UnityEngine.Debug:Log(Object)
Liner:Update() (at Assets/script/StageSelect/Liner.cs:32)
・・・
using System;
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.UI;
public class Liner : MonoBehaviour
{
public RectTransform startMarker;
public RectTransform endMarker;
// スピード
public float speed = 1000.0F;
//二点間の距離を入れる
private float distance_two;
void Start()
{
//二点間の距離を代入(スピード調整に使う)
distance_two = Vector3.Distance(startMarker.position, endMarker.position);
}
void Update()
{
// 現在の位置
float present_Location = (Time.time * speed) / distance_two;
Debug.Log(startMarker.position + " " + endMarker.position + " " + present_Location);
// オブジェクトの移動
transform.position = Vector3.Lerp(startMarker.position, endMarker.position, present_Location);
}
}
//シーンimageのfadeスクリプトを考える
Gameoverシーンの演出を変更するため画面移行をInvoke("GameOver", 10.0f);と遅くし、演出に時間をかけられるようにする。
ガラスが割れるエフェクトを実装しようと思ったがblenderを使用する必要があるようなので今回は保留にする。ストレージに問題がなくなったら実行する。
参考エフェクトとして下記のスクリプトを背景イメージにアタッチする。Isfadeをチェックし、time=2とした。
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.UI;
public class Fade : MonoBehaviour
{
bool IsFadeOut;//フェードアウトをするかどうか
public bool IsFade;//フェードの演出をするかどうか
public float time;//フェードにかかる時間
Image image;
void Start()
{
image = this.GetComponent<Image>();
}
void Update()
{
if (IsFade)
{
if (IsFadeOut)
{
//フェードアウトの処理
if (image.color.a < 1) image.color = new Color(0, 0, 0, image.color.a + 1 / (60 * time));
else image.color = new Color(0, 0, 0, 1);
}
else
{
//フェードインの処理
if (image.color.a >= 0) image.color = new Color(0, 0, 0, image.color.a - 1 / (60 * time));
else image.color = new Color(0, 0, 0, 0);
}
}
}
public void StartFade(float t, bool fadeout)
{
time = t;
IsFadeOut = fadeout ? true : false;
if (IsFadeOut) image.color = new Color(0, 0, 0, 0);
else image.color = new Color(0, 0, 0, 1);
IsFade = true;
}
}
変更するのは透明度aだけで良いので下記のようにスクリプトを変更した。
徐々にimageを実体化させている。
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.UI;
public class Fade : MonoBehaviour
{
public float time;
public float speed = 40.0f;
Image image;
void Start()
{
image = this.GetComponent<Image>();
}
void Update()
{
//フェードインの処理
if (image.color.a >= 0)
{
image.color = GetAlphaColor(image.color);
}
}
Color GetAlphaColor(Color color)
{
time += Time.deltaTime * 5.0f * speed;
// color.a = Mathf.Sin(time) * 0.1f + 0.5f;
color.a = time/100 + 0.01f;
return color;
}
}
//canvasのimageとparticle systemを併用する
canvas内にparticle systemを設置し、particle systemのorder in layerをcanvasのorder in layerより大きくすることでparticleがcanvasより手前に描画される。
particleの色はStart colorから変更することが可能。大きさはStart sizeで変更。
//unityアセットストアのExtension Assetについて
再度無料Extension AssetであるSpace Robot Kyleは、app storeに公開するアプリ内のキャラクターとして使用できるのかを確認した。
free Extension Asset(One license required for each individual use)という謎なカテゴリーになっているが規約に基づくと一人で作成する場合はエンドユーザーにアセットの抜き出しが不可能な形でアプリデータを納品すれば問題はなさそうである。
https://support.unity3d.com/hc/en-us/articles/208601846-A-package-I-want-to-purchase-on-the-Asset-Store-says-Extension-Asset-One-license-required-for-each-individual-user-under-the-License-section-What-does-this-mean-
https://answers.unity.com/questions/1711324/do-i-need-a-license-for-a-free-extension-asset.html
https://unity3d.com/jp/legal/as_terms
http://assetstore.info/notice/eulamodify20200203/
https://helpdesk.unity3d.co.jp/hc/ja/articles/900000789966-%E5%88%A9%E7%94%A8%E8%A6%8F%E7%B4%84-%E4%BD%BF%E7%94%A8%E8%A8%B1%E8%AB%BE%E3%81%AB%E5%9F%BA%E3%81%A5%E3%81%8F%E3%82%A2%E3%82%BB%E3%83%83%E3%83%88%E3%81%AE%E3%83%A9%E3%82%A4%E3%82%BB%E3%83%B3%E3%82%B9%E7%A8%AE%E5%88%A5%E3%82%92%E7%9F%A5%E3%82%8A%E3%81%9F%E3%81%84