トマシープが学ぶ

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

【OVR】コントローラーを音から振動させる【Unity】

OculusIntegrationを入れたうえでのコントローラー振動の方法は2種類あるようです。

推奨と非推奨。 

こちらのスライドで知りました。

OculusQuest完全に理解した。 / Oculus Quest Completely Understood. - Speaker Deck

非推奨のほうでは音からコントローラーの振動を作れるそうです!おもしろそう!やってみたい。

Oculusの公式リファレンス

developer.oculus.com

OVRInput(推奨)

振動はこんな感じです。

OVRInput.SetControllerVibration(1, 1, OVRInput.Controller.RTouch);

これを書くと2秒間ブウウウウってなります。

 

リファレンスGoogle翻訳

static void OVRInput.SetControllerVibration(周波数、振幅、Controller controllerMask)
振幅と周波数の期待値は、0から1までの範囲の任意の値です。 値が大きいほど、コントローラーの振動が強くなります。 振動を終了させるには、振幅と周波数の両方を0に設定します。コントローラの振動は、最後の入力から2秒後に自動的に終了します。

振動を終わらせたいタイミングで

OVRInput.SetControllerVibration(0, 0, OVRInput.Controller.RTouch);

みたいにしたらいい。

OVRHaptics(非推奨)

廃止予定の非推奨ですが、こちらの方法だとAudioClipの波形から振動を生成できます

f:id:bibinbaleo:20190627132044p:plain

音も同時に流してみました。

public class haptics : MonoBehaviour
{
    public AudioSource audiosource;
    OVRHapticsClip hapticsClip;

    void Start()
    {
        hapticsClip = new OVRHapticsClip(audiosource.clip);
    }
    void Update()
    {
   
        if (OVRInput.GetDown(OVRInput.RawButton.A))
        {
           OVRHaptics.RightChannel.Mix(hapticsClip);
           audiosource.Play();
        }
    }
}

こりんさんの記事が詳しいですが、

OVRHaptics.RightChannel.Mix(hapticsClip);

sはいらないです。

framesynthesis.jp

qiita.com

どんな音がいいのか

いろいろ試してみましたが、ドアをどんどんたたく音とか殴る音とかかな?

壁ドンとか

 

f:id:bibinbaleo:20190627211515p:plain

最後に

OVRInputでは音からの生成できないのかな

 

3D文字を表示させるLookingGlassコンテンツ制作【文字入力編】

 続き

bibinbaleo.hatenablog.com

日本語

まえはスクリプトを入れないと日本語を使えなかったのですが、今やったら使えました。

f:id:bibinbaleo:20190609212401j:plain

bibinbaleo.hatenablog.com

入力したら表示されるようにする

InputField

テキスト入力は、とりあえず無難にInputFieldを使ってみる.

tech.pjin.jp

InputFieldを置いて、スクリプトを書く。

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

public class fontmaker : MonoBehaviour
{
    public InputField inputfield;

    public void onEndText()
    {
        FlyingText.GetObjects(inputfield.text);
        InitInputField();
    }

    void InitInputField()
    {

        // 値をリセット
        inputfield.text = "";

        // フォーカス
        inputfield.ActivateInputField();
    }
}

そしてInputFieldのOnEndのところにonEndTextを付ける。

f:id:bibinbaleo:20190616204545p:plain

これで入力してEnterを押したら文字が落ちてくるようになった!!

f:id:bibinbaleo:20190616204540p:plain

カーソルの幅とかいろいろ設定できるのでする。

f:id:bibinbaleo:20190616210030p:plain

FlyingText

FlyingTextのスクリプト部分はこんな感じ。

 Vector3 random = new Vector3(Random.Range(-10.0f, 4.0f), 5, Random.Range(-1.5f, 6.0f));
 float size = Random.Range(1.2f, 4.6f);
        FlyingText.GetObjects(inputfield.text,material,edgeMaterial,size,0.25f,5,random, Quaternion.identity);

要素はこんな感じ。(付属のpdfに解説があるよ)

GetObject

(text : String,

material : Material,

edgeMaterial : Material,

size : float,

extrudeDepth : float,

resolution : int,

position : Vector3 = Vector3.zero,

rotation : Quaternion = Quaternion.identity)

サイズと生成位置をランダムにした。

生成位置を変えるだけなら

FlyingText.GetObject ("Hello", new Vector3(0, 5, 10), Quaternion.Euler(0, 90, 0));

みたいに位置と角度だけ指定したらいいけど、sizeも変えるには上みたいにいっぱい他も指定しないといけないみたい。

色を変えたいと思ったけど、過去の自分も試しててできてなかった。

成長したところを見せてやろうか!っと思ったけどめんどくさいからいいや。

マテリアルをグラデーションのあるものにしたら、文字同士の色に変化出るかも

文字全消し

Clearボタンを押したら文字が全部消えるようにしたい

www.sejuku.net

今は3DText(XX)という名前のオブジェクトが生成されているだけ。

f:id:bibinbaleo:20190616215153p:plain

これを全部消すには名前で探す、もしくはテキストを空のゲームオブジェクトの子として生成されるようにして、その子をまとめて消すか。

名前で探すのは重いし、一つだけしか消えない気がするので、子オブジェクトにして消します

qiita.com

 

できたスクリプトがこちら

    public void onEndText()
    {   
        Vector3 random = new Vector3(Random.Range(-10.0f, 4.0f), 5, Random.Range(-1.5f, 6.0f));
        float size = Random.Range(1.2f, 4.6f);
        GameObject obj = FlyingText.GetObjects(inputfield.text,material,edgeMaterial,size,0.5f,5,random, Quaternion.identity);
        obj.transform.parent = parentObj.transform;
        InitInputField();
    }

    public void OnDestroyfont()
    {
        foreach (Transform child in parentObj.transform)
        {
            // 一つずつ破棄する
            Destroy(child.gameObject);
        }
    }

これで子要素になる

obj.transform.parent = parentObj.transform;

 

完璧な挙動!!一発でできて気持ち良すぎる。我天才か?

録画

ゲーム画面を良い感じにキャプチャする方法ないかな

OBSで画面キャプチャで選んだらこんな感じ。

www.youtube.com

こちらのツイートみたいに2Dで動画取りたい。

ちなみにこのスクショはここに保存される。

f:id:bibinbaleo:20190616222906p:plain

取りあえず画像

手振れがひどいけど動画

www.youtube.com

できた

カメラを追加して、ターゲットディスプレイ2にして、ゲームビュー追加してdisplay2を表示したらできた。

Windowsの設定でメインの解像度を100%にしないと1xにならない。

youtu.be

次回

音を付けたり、なんか雰囲気いい感じにしてストア登録したいお気持ち。

全体スクリプト

gist.github.com

【ARcore+Unity】マーカーありARをしようとした

 前回はタップしたらオブジェクトが出るサンプルをいじって、自分のモデルを出しました。

bibinbaleo.hatenablog.com

マーカーありのサンプルもあるので少し触ってみた。

サンプルシーン

AugumentedImageというサンプルシーンを使って、マーカーありARをする。

シーンの構成はこんな感じ

f:id:bibinbaleo:20190602192210p:plain

 

マーカーにしたい画像を右クリックCreate>GoogleARCore>Augumented~~

からデータセットができる。

f:id:bibinbaleo:20190602191811p:plain

それをARcoreDeviceのSessionConfigをクリック>AugumentedImageSettingConfigのDatasetにセット

f:id:bibinbaleo:20190602192212p:plain

f:id:bibinbaleo:20190602191809p:plain

これで実行すると、画像の4つの角に額縁みたいなのが付く。

f:id:bibinbaleo:20190602192215p:plain

任意のモデル出す

任意のモデルを出したいけど、このサンプルはなんか特殊みたいで簡単に変えられそうにない。

ExampleCobtrollerのAugumented~~をダブルクリックすると

f:id:bibinbaleo:20190602192722p:plain

こんなシーンが開く

f:id:bibinbaleo:20190602192729p:plain

ここにモデルはある。

雑に置いた。

f:id:bibinbaleo:20190602193821p:plain

出たけど真っ黒!ライト置いたのに。

f:id:bibinbaleo:20190602193818p:plain

っていうかなんで額縁は明るいんだろう。

スクリプト

自分でスクリプトを書かないといけないみたい。

jyukoさんの記事が参考になりそうです!
jyuko49.hatenablog.com

最後に

少し前に書いてたこの記事だけど、力尽きたのでここで終わります。

自分用メモ:ARcore2019(Win)2019.1.0f2

日本地図を使ったアプリを作りたい!!【Part3完成】アプリ閉じても情報保持

続き

bibinbaleo.hatenablog.com

今回で完成させるぞ!

完成したものがこちらです。

play.google.com

後ろのほうでうんこ実装してるけど気にしないでね。自分用メモ!!!!

プライバシーポリシー

最近GoogleStoreに出す際、内容問わずプライバシーポリシーを記載していないとストアから消されてしまうそうです。

bibinbaleo.hatenablog.com

 

前はリンクを貼りましたが、今回はアプリ内に表示させます。

f:id:bibinbaleo:20190607215051p:plain

 iボタンと×ボタンはペイント3Dで自分で作ることにします。

f:id:bibinbaleo:20190609141424p:plain

白くて見えないと思うけど下にあるので使っていいよ

×

f:id:bibinbaleo:20190609141435p:plain

i

f:id:bibinbaleo:20190609141437p:plain

アプリを閉じても情報保持(PlayerPrefs)

アプリがいったん終了すると、選んだ県の情報も消えてしまうので保持するようにする。

どうやるんだろう~そんなのやったことないな。

korechipostit.hatenablog.com

xml

teratail.com

PlayerPrefsというのを使えばいいらしい

www.sejuku.net

とりあえず勉強のため、ボタンを押した数を保存するものを作ってみた。

ボタンを押したらその回数が保存されるもの。右下の幅広いiがセーブボタンね。

f:id:bibinbaleo:20190609145836p:plain

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

public class plyerpfa : MonoBehaviour
{
    private int Press = 0;
    public Text text;
    void Start()
    {

       Press = PlayerPrefs.GetInt("PRESS",0);
        text.text = Press.ToString();
    }

    

    public void onPress()
    {
        Press++;
        text.text = Press.ToString();
        Debug.Log(Press);
    }

    public void OnSave()
    {
        PlayerPrefs.SetInt("PRESS", Press);
        PlayerPrefs.Save();
        Debug.Log(Press);
    }

}

 

ゲームが終わるとき

PlayerPrefs.Save (); でセーブされるらしい。

アプリが落ちたら呼ばれる関数あるのかな?

ないならセーブボタン作らないといけない?

調べたらゲームが終わるときに呼ばれるものがあった。

docs.unity3d.com

Editorで動かせばちゃんと動く。

でもちゃんとAndroidだとApplication-Quitを呼んで閉じないと呼ばれないっぽい。

docs.unity3d.compafu-of-duck.hatenablog.com

実際にApplication-Quitを呼ばずにホーム画面戻ってアプリタスク消去で試してみたけど、セーブされなかった。

つまりセーブボタンもしくはアプリ終了ボタンのどちらかは要るみたい。

終了ボタンなんて誰も押さないだろうからセーブボタン作った。

できた!!!!

f:id:bibinbaleo:20190609162542p:plain

消す 

セーブされたデータはメニューから消せるって。

qiita.com

Edit>Clear All PlayerPrefs

やったら消えた!!

実装

とりあえずPlaterPrefsの使い方はわかったところでアプリに組み込む。

フラグ

保持したい情報って、フラグ情報なんだけど、どうすればいいのかな
public void onButton()
{
btnChangeFlag = !btnChangeFlag;
image.color= btnChangeFlag ? btnColor1 : btnColor2;
}
}

 

playerPrefsにはboolを保持する仕組みはなさそう。

かといってboolをintにキャストすることもできないらしい

social.msdn.microsoft.com

boolじゃなくてintでフラグの代わりするか

        if (flg == 0)
        {
            image.color = btnColor2;
            flg = 1;
        }

        else if (flg == 1)
        {
            image.color = btnColor1;
            flg = 0;
        }

これでよい。

あと試してて気づいたけど、start()が呼ばれるときにsaveしてたものをもとに色を変えないといけないんだね。

 void Start()
    {       
       flg = PlayerPrefs.GetInt("TPRESS"+ this.gameObject.name, 0);

        if (flg == 0)
        {
            image.color = btnColor1;  
        }

        else if (flg == 1)
        {
            image.color = btnColor2;
        }
    }

ボタンそれぞれに違う変数

intをフラグの代わりにするのはできたけど、保存するPlayerPrefsの変数の名前が一緒だとすべてが0か1になってしまう。

ボタンを押して色が変わるスクリプトは1種類ですべてのボタンにつけている。

ボタンの名前を変数にいれたらできるかな。

PlayerPrefsの変数に変数?をいれることはできるみたい。

teratail.com

こんなかんじ

flg = PlayerPrefs.GetInt("TPRESS"+ this.gameObject.name, 0);

じゃあ自分のオブジェクトボタンの名前を取ってそれを変数に組み込めばいいなって思ったら・・・

ボタンの名前全部一緒だったーーーーー

ボタンの上のimageの名前はコピペしたら(1)(2)・・・って自動でつくから名前変わるけど、子オブジェクトのbuttonは全部button1っていう名前だった。

 

imageの名前を取ってくる方法もあるのかもしれないけど、ググるのがめんどくさいので47個のボタンの名前をひとつづつ変えることにした(アホ)

f:id:bibinbaleo:20190609162909p:plain

趣味で作ってる時ぐらい効率化とか考えたくない!!!

 

できた!!!!!

ちゃんと保存された!!!Androidでもちゃんと動いた!!!

終わり!

save

ちなみに保存は、都道府県を押したときにするようにしたのでsaveボタン要らないね。

でもあったほう使う人は安心するかな?

いや使う人いないからいいか・・・

一応作った。

f:id:bibinbaleo:20190609170613p:plain

ついでにデザイン変えた。

f:id:bibinbaleo:20190609170629p:plain

 

スマホ用アイコンの大きさって難しいな・・・

ボタンのハイライトって、別のボタン押したら消えるんだね。

GooglePlayConsole

登録しました。

めんどくさいけど1時間もあればできる。

bibinbaleo.hatenablog.com

翌日リジェクトされた。

f:id:bibinbaleo:20190610213004p:plain

一応対象年齢をちょっと変えてもう一度申請したけど、いつ通るかわからないから、もうこの記事公開しちゃう 

bibinbaleo.hatenablog.com

 

公開されました。

play.google.com

最後に

  今回はPlayerptrfsというものを使いました!圧倒的成長!!!!

日本地図を使ったアプリを作りたい!!【Part2】canvasのピンチ操作

いったことのある県をタップすると色が変わるだけのアプリづくり。

bibinbaleo.hatenablog.com

前回、素材を探して、県をひとつづつ切り分けてボタンにする作業を途中までしました。

ここ数日47都道府県の素材の切り出しをせっせとやって、読み込みまで完了しました。

f:id:bibinbaleo:20190606211352p:plain

Canvasをピンチで拡大

次はスマホのピンチ操作で画面を拡大します。

ググってあったコードを3つぐらい試したけどどれも反応しない・・・

unity3d.com

qiita.com

なんでかと思ったら、拡大したいのってCanvas以下のもので、カメラにべったりくっついているから.

解決方法1

 Canvas以下のものをゲームオブジェクトの子にしてゲームオブジェクトが拡大するようにする。

f:id:bibinbaleo:20190605210307p:plain

ゲームオブジェクトにして、こちらの記事の通りにしたらできた!

qiita.com

ただ、画面中央で一か所が拡大されるだけなので、拡大を始めた場所で拡大するか、拡大した状態で画面を動かせるようにする必要がある。

解決方法2

・Cameraを操作するならCanvasをワールドスペースにする。

こちらの記事の方法が良さそう。

qiita.com

Canvasをワールドスペースにしました。

f:id:bibinbaleo:20190605213301p:plain

カメラとCanvasを頑張って一致させる。

f:id:bibinbaleo:20190605213303p:plain

そして上の記事のスクリプトを貼って、インスペクタにいい感じに値を設定したらできました!!!

f:id:bibinbaleo:20190605212908p:plain

カメラはこんな感じ。私の場合128でちょうどいい。

f:id:bibinbaleo:20190605212904p:plain

 インスペクタをいじるだけでなく、Start()のところの9も変えないといけません。

 

これぐらいのズームができます。

f:id:bibinbaleo:20190606211303p:plain

県名追加

気づいちゃったんですけど、このデザインの日本地図だと都道府県全部覚えている人でもどれが何県かわからない。

都道府県覚えてない人ならなおさらわからない。県名入れよう

 何も見ないで描いた結果

f:id:bibinbaleo:20190605220226p:plain

 正解

f:id:bibinbaleo:20190605220415p:plain

びっくりするぐらい間違ってて泣いた。九州以外全部の地方で何かしら間違ってる。お受験・・・

徳島と宮城は完全に忘れてたし、いろいろ順番が違うとこが多すぎた。

 

そしてうすうす気づいていたけど、この地図福井がない。京都と一緒になってる?

修正しなきゃ・・・と思ったら三重もないな!!

ちょっとさすがにきつい・・・

f:id:bibinbaleo:20190606210524p:plain

頑張って分けました。

ついでにフォントを薄くしました。

次回

・アプリ閉じても情報保持

・インフォメーションボタンを作って、プライバシーポリシーやお借りした素材情報を乗せる画面を作る

・無駄にNightモード

3D文字を表示させるLookingGlassコンテンツ制作【準備】

 この記事で考えた、3Dフォントを表示させるやつをやります。

bibinbaleo.hatenablog.com

3D文字表示はこのアセットを使います。

 

使い方はこの記事

bibinbaleo.hatenablog.com

久しぶりすぎて忘れた。できた

f:id:bibinbaleo:20190602205116p:plain

文字関係ないけど、箱を作ってその中にPointライト置くといい雰囲気になる。箱には適当な模様を付ける。

ライティングもskyboxじゃなくてColorで暗めのいい感じの色。

f:id:bibinbaleo:20190602210420p:plain

f:id:bibinbaleo:20190602205820p:plain

とりあえず表示はできた!いい感じ!!!

次回

・フォントを良い感じの探しす。

・文字が落ちてきたり、文字がバラバラになったりなどのスクリプト操作

・キーボードで入力した文字が落ちてくるようにする

・色が空間の色が緩やかに変わったりする演出(手動でやったらいい感じだった)

などを気が向いたらやりたいです。

 

どこでもドアARができるアセット「Pocket Portal VR」遊べなかった【Unity】

二つの世界を繋ぐことのできるポータルアセット!

www.asset-sale.net

昔やったどこでもドアが簡単にできる!

bibinbaleo.hatenablog.com

各種AR・VRのサンプルが用意されている。FPSDemoならARVRなくても遊べそう。

f:id:bibinbaleo:20190529061955p:plain

でもエラー出て遊べなかった。MissingPrefabになってる

f:id:bibinbaleo:20190529061958p:plain

f:id:bibinbaleo:20190529062001p:plain

ええー

【Unity】Mobile Notificationsでプッシュ機能作ってみる①【Android】

スマホの通知機能、作ってみたい。

できるらしい。

application.hateblo.jp

iosAndroidで対応が違うとこもある?とりあえずAndroidに絞る!

調べたけど、これが定番!みたいなの分からなかった。

とりあえず2種類見つけたので試してみる。

 

Mobile Notifications

unity package managerのpreviewに入っている機能

PackageManagerでAdvanceのところをpreviewにしたら

f:id:bibinbaleo:20190528212223p:plain

出てくる!

f:id:bibinbaleo:20190528212229p:plain

入れるとPlayerSettingにMobile Notification~がある。

f:id:bibinbaleo:20190528215427p:plain

こちらを参考に設定

www.shibuya24.info

通知のアイコンを設定。正方形じゃないと怒られる。

f:id:bibinbaleo:20190528215431p:plain

あと画像の設定でAdvancedを開いてRead/Writeにチェック入れる。

f:id:bibinbaleo:20190528215425p:plain

こちらの記事のスクリプトを丸ごと使わせてもらいました。

baba-s.hatenablog.com

using System;
using Unity.Notifications.Android;
using UnityEngine;

public class tuutiunity : MonoBehaviour
{
    private string m_channelId = "【ここにチャンネル ID】";

    private void Awake()
    {
        // 通知用のチャンネルを作成する
        var c = new AndroidNotificationChannel
        {
            Id = m_channelId,
            Name = "お知らせ",
            Importance = Importance.High,
            Description = "やっほー",
        };
        AndroidNotificationCenter.RegisterNotificationChannel(c);
    }

    // ボタンが押されたら呼び出される関数
    public void OnClickButton()
    {
        // 通知を送信する
        var n = new AndroidNotification
        {
            Title = "お知らせ",
            Text = "やっほー",
            SmallIcon = "icon_0",
            LargeIcon = "icon_1",
            FireTime = DateTime.Now.AddSeconds(10), // 10 秒後に通知
        };
        AndroidNotificationCenter.SendNotification(n, m_channelId);
    }
}

 

上の通知用チャンネル作成の部分はよくわからなかった。

通知で表示されるのは下の部分。

適当なボタンを設定して、OnClickButton()を呼び出す。

できた!!

f:id:bibinbaleo:20190528220148p:plain

f:id:bibinbaleo:20190528220150p:plain

UniLocalNotification

こっちを最初に見つけてやっていた。

こちらのunitypackageを入れる。

github.com

製作者様の記事を見ながら実装。

smartgames.hatenablog.com

ただ私はうまくいかなかった。

スクリプト間違っていたのかもしれない。

ちなみにスマホのホームボタンを押したときを検知するのは、

//一時停止or再開時
private void OnApplicationPause (bool pauseStatus){

//一時停止
if(pauseStatus){

}
//再開時
else{

}

}

 だそうです。勉強になった。

kan-kikuchi.hatenablog.com

最後に

通知をするタイミングをどうやって書くのか、そのバリエーションが分からない。

そのほか細かいところまだなので今度調べます。zzz

  

日本地図を使ったアプリを作りたい!!【Part1】

スケールの大きなアプリを作りたくなりました。

日本地図!!

行ったことある県をタッチしたら色が変わるだけのアプリを作ってみたいと思います。

都道府県素材探し

TopeconHeroesさんの影絵サイトが良さそうでした!尊敬する

kage-design.com

と思ったらAi形式でした・・・イラレ消えたんだよね・・・

www.ac-illust.com

結局よさげなのなかったのでとりあえずこのpngを入れました。

www.silhouette-illust.com

f:id:bibinbaleo:20190526194903p:plain

黒だとUnityのspriteカラーを変えたときに色が変わらなかったので、paint3Dで白に塗りつぶしました。

f:id:bibinbaleo:20190526201119p:plain

すると色を変えられる!

f:id:bibinbaleo:20190526201219p:plainこのpng画像いじって47個分png作ったらやりたいことできそうだな。

f:id:bibinbaleo:20190526210307p:plain

こんな感じでキャンバスの大きさは全国都道府県のまま、県だけを残す。そしたら白い部分だけ色を変えられる。

ほかの県を消すのは消しゴムツールで地道にやるしかない。塗りつぶしは簡単だったのに><

 

 

それかこちらの画像のように文字で県名を入れてそれを押すのでもいい。

www.ac-illust.com

スクリプトでimageの色を変える

1回クリックしたら緑、もう一回クリックしたら白に戻る。

こちらがめちゃくちゃ参考になった。

teratail.com

using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.UI;
public class touch : MonoBehaviour
{
    public Image image;
    [SerializeField]
    Color btnColor1 = Color.red;
    [SerializeField]
    Color btnColor2 = Color.blue;
    bool btnChangeFlag = true;

    public void onButton()
    {
        btnChangeFlag = !btnChangeFlag;
        image.color= btnChangeFlag ? btnColor1 : btnColor2;
    }
}

 

image.color= btnChangeFlag ? btnColor1 : btnColor2;

っていうの使ったことない。調べたら条件演算子というらしい。

trueの時は:の左側、falseの時は右側が入る。

docs.microsoft.com

これでスイッチ切り替え処理書けるのか!!

いままで適当な変数に1,0を入れて判断するみたいなくそめんどくさいスクリプト書いてた!!!

また一つ成長したな。

 

県の形をボタンにするには

県を押したらその県の色が変わるようにします。

タッチ判定はspriteの色がついている部分だけにしたいのですが、デフォルトだとspriteの形は四角になります。

調べたらスクリプト書いたりしないと、spriteの色がついているところだけに反応するボタンは作れないらしい!!

qiita.com

ええー。しかもめっちゃ大変そう!

普通の四角のボタンにする

あきらめて四角いボタン判定にします。

構造はimageの下にbuttonコンポーネントを置きます。

f:id:bibinbaleo:20190526210456p:plain

上のimageにそれぞれの県のspriteをセット。RaycastTargetは外さないとほかのボタンに干渉する。

f:id:bibinbaleo:20190526210713p:plain

下のボタンにさっきのスクリプをセット。Imageは上のimage

f:id:bibinbaleo:20190526210709p:plain

ボタンの範囲は県に合わせる。

f:id:bibinbaleo:20190526210723p:plain

多少当たり判定がかぶるのは仕方ない・・・

これでやりたいことできた!!!

f:id:bibinbaleo:20190526212449g:plain

絶対もっと簡単な方法あると思うけど!!

そもそも県を切り出すツールにpaint3Dを使ってるのが間違っているのでは!!イラレ使いたい・・・

ビルド

新しいスマホにCtoCのケーブルでPCとつなげてbuild&Runしようとしたら、デバイスが認識されていないって出た。

f:id:bibinbaleo:20190526194938p:plain

スマホは開発者モードにしたんだけどな~

と思ったら、開発者向けオプションからUSBでバッグを有効にしないといけなかった!

Pixel3aでは開発者向けオプションはシステム>詳細情報の中にあった。

qiita.com

最後に

とりあえずやりたいことの下地はできた。

あとは自分で頑張って47個のspriteを何かしらの方法で用意するのみ・・・

あ、あと今のままじゃボタンが押しにくいので、拡大・縮小できるようにしよう。

【Unity】Textボックスの右下に文字が入らない

Textボックスいっぱいに文字を入れたとき、ボックスの右下だけ文字が入らないことがありました。(Unity2018.3)

f:id:bibinbaleo:20190523211647p:plain
ボックスぴったりの文字数だと右下も入るけど、オーバーすると右下は空欄になる。

全部文字が入り切ってませんよーっていう親切な合図なのかな?

ちなみに2017.4でやったらオーバーしても右下入った。

どのバージョンからの変更なのかわからない。

 

まあどうでもいいか。

検索しても何も引っかからない。そもそもなんて検索するんだ。

  

enum関数について学ぶ【Unity】

enum関数のお勉強

www.sejuku.net

enum

数字の代わりに名前を付けられるイメージ

変数じゃなくて、中身の変わらない定数にしか使えない。

こんな感じで宣言する

    public enum roomname
    {
        bath,bed,piano
    }

最後のカンマはあってもなくてもエラー出なかった。

公式では付けてないけど、上の侍エンジニア記事では最後にカンマ付けてた。

enum キーワード - C# リファレンス | Microsoft Docs

変数を作る

自分で作ったenum型?で変数を定義できる。

private roomname nowroom=roomname.piano;
public roomname nowroom;

intとかGameObjectみたいな場所に自分で作った型を書くの初めてで、最初は戸惑った。

publicにしたらインスペクタで選ぶことができる!!

f:id:bibinbaleo:20190523135955p:plain

enumを==で判別する

if(nowroom==roomname.bed)

みたいにする。nowroom==bedだとだめだった。

etc9.hatenablog.com

数値は0しか入れられない?

enumで設定した変数に初期値を設定するときに、roomname.pianoみたいな文字じゃなくて、配列のように数値を入れてみた。

private roomname firstroom=0;

すると0のときはうまくいったのに、それ以外の数字を入れたらエラーが出た。

Cannot implicitly convert type `int' to `enumtest.roomname'. An explicit conversion exists (are you missing a cast?)

f:id:bibinbaleo:20190523135347p:plain

intをenumに変換できませんだって。

ふつうはちゃんと名前で指定するものなんだろうけど、逆になんで0ではエラーが出ないんだろう。

公式のリファレンスには最初の値が0で、1ずつ増えていくって書いてるから、数値としては正しいはず。

既定では、最初の列挙子の値は 0 で、後続の列挙子の値は 1 ずつ増加していきます。 たとえば、次の列挙型では、 Sat は 0、 Sun は 1、 Mon は 2などとなります。

enum キーワード - C# リファレンス | Microsoft Docs

追記

アドバイスいただきました。

private roomname firstroom=(roomname)1;

としたら通りました!

あと、数字を0から始めたくない場合は、最初の宣言の時に、

public enum roomname { bath=1,bed,piano }

みたいに最初の列挙子に始めたい数字を入れたらいいそうです。

 ありがとうございます!

switch

enumはswitch文とよく一緒に使うらしい。

 switch (nowroom)
        {
            case roomname.bath:
                Debug.Log("今お風呂");
                break;
            case roomname.bed:
                Debug.Log("今ベッド");
                break;
            case roomname.piano:
                Debug.Log("今ピアノ");
                break;

        }

最後に

用語の使い方は間違ってると思うけど、大体理解できた。

業務でUnityを使い始めたので、これからこういう系の記事増えるかも!

www.sejuku.net

Unityの内部コードはgithubに一部ある

結構前に、Unityエディタの内部コードが公開されたというニュースを聞いた記憶がある。

調べたらやっぱり公開されてた。

github.com

tsubakit1.hateblo.jp

c#部分だけらしい。C++も使われてたんだ。よくわからない

今まで教授が、「Unityは内部コードがわからないから研究には使うには向いてない」的なこと言ってたけど、これで研究にも堂々と使えるね!

研究室の9割の人がUnity使ってるのに、全くUnityを触ろうとも歩み寄ろうとも理解しようともしない

ただ、このコードをどうやって活用するのかよくわからない

誰か例として「どうしてこの挙動するのか謎だったけど、コードのここをみたら理由が説明できるようになりました」みたいな記事書いてくれないかな。

どこかの研究室や会社とかではそういう会話がなされているのかな。

 

あと拡張エディタを作るのにも使えるらしい

わからない

ぽちぽちボタン押すだけの世界に行きたい?

 

LookingGlass初動【Unity】

 LookingGlassをお借りしたので、これからお家でゆっくり触っていきたいと思います。

以前も一回触ったことはあったのですが、SDKが随分変わっていたので、一から書こうかなbibinbaleo.hatenablog.com

こちらの記事を参考に~

tks-yoshinaga.hatenablog.com

ディスプレイ

つないだらまずディスプレイの設定をする。

f:id:bibinbaleo:20190516205544p:plain

LookingGlass側を100%、2560*1600

f:id:bibinbaleo:20190516205434p:plain

表示画面を拡張

f:id:bibinbaleo:20190516205541p:plain

ライブラリ

ここの3番目からライブラリがダウンロードできる

lookingglassfactory.com

f:id:bibinbaleo:20190516212359p:plain

Library.exe起動

f:id:bibinbaleo:20190516212406p:plain

画面が乗っ取られてスクショ取れないけど、アプリ選んでダウンロードとかしたら動く。

f:id:bibinbaleo:20190516212548j:plain

サムネにマウスが乗るだけでLookingGlassに3Dの静止画?が映ってすごかった。

Unity

SDK

lookingglassfactory.com

2か月前は0.1.4だったのに1.0.0に変わってる!

f:id:bibinbaleo:20190516210745p:plain

入れてサンプルシーンを開く。

f:id:bibinbaleo:20190516205759p:plain

HoloPlayCaptureを押してインスペクタの「TogglePreview Ctrl+E」を押すと、LookingGlassに表示!!

f:id:bibinbaleo:20190516212557j:plain

なんか角度とかが安定しないけどまた今度

 

リリースしたGoogleアプリが消されたのでプライバシーポリシー書いたら復活した【Unity】

5/5にGooglePlayストアにリリースしてたアプリが、5/10にストアから消されていました。

bibinbaleo.hatenablog.com

 メールが届いていて、そこに

削除の理由: Android 広告 ID の使用ポリシー及び Google Play デベロッパー販売 / 配布契約 4.8 への違反

と書いていました。

「広告IDの収集をしてるのにプライバシーポリシーを書いてないから」だそうです。

広告IDの収集なんてしてないよ~~><

原因 

追記:

twitter見てたらみんなアプリ消されてました。

広告IDの収集してようがしてまいが、プライバシーポリシーがないと消えるようになったみたいです。(わからないけど)

 

ーーーーーーーーーーーーーーーーーーーーーーーーーーーーー

qiita.com

こちらの記事ではfirebaseというライブラリが悪さしてたらしいけど、私のはライブラリとか何も入れていない。

Unityで作ってる人の事例探そうと思ったけど見つけられない。

他の記事で何かしらのライブラリを入れている事例しか出てこない。

よくわからないので勉強がてらプライバシーポリシーを作ることにする。

プライバシーポリシー

メールには

必要な対応: プライバシーポリシーをストアの掲載情報及びアプリ内に追加してください

と書いてあった。

プライバシーポリシーを書いて、ブログとかgithubとかに載せて、そのリンクをconsoleに貼る。あとアプリ内にもリンクを張る。

広告取ってないのにプライバシーポリシーに何書けばいいんだろう

英語ならジェネレーターがあるらしい

app-privacy-policy-generator.firebaseapp.com

英語でもいいのかな?

githubでみつけたこれが良さそうだったので真似た。

gist.github.com

こんなかんじでgistにmd形式で載せました。

gist.github.com

収集してないからね。

f:id:bibinbaleo:20190514210105p:plain

日本語でちゃんと書きたい人はここらへんの記事が参考になりそう。

cocoamix.jp

Unityでリンクを張る

置き場所がなくて結局ゲーム画面の右上にリンクボタンを設置した。

f:id:bibinbaleo:20190514205804p:plain

こうやって書けばいい。

public void Link()
{
Application.OpenURL("https://gist.github.com/bibinba/708117ebafb95054362f54e81e8cc04d");
}

外部リンクだとわかりやすいようにマークを付けた。

マークはこちらから

icooon-mono.com

公開

コンソールに新しいバージョンのapkをあげて、プライバシーポリシーのURLを張る。

f:id:bibinbaleo:20190514210358p:plain

さて公開されるのか。

いつ公開されたかわからないけど、少なくとも10時間後には公開されていました!!

やったー!!

play.google.com

ストアページにもプライバシーポリシー載っていますね。

f:id:bibinbaleo:20190515064042p:plain

最後に

結局原因は何だったんだ。

こんなに純粋無垢なUnityゲームなのに・・・

github.com

多分今はまだプライバシーポリシーの中身も、アプリにリンクが貼られているかとかも確認していなさそう。知らんけど

参考

backport.net

cocoamix.jp

blog.oil-seller.work

 

Unityで2Dの(ちゃんとした)脱出ゲームってどうやってつくるんだろう?

先日、初めてUnityで2Dの脱出ゲームを作りました。
bibinbaleo.hatenablog.com

これは部屋画像4枚と、鍵・ドアだけしか仕掛けがないので簡単にできました。

でもちゃんとした脱出ゲームって、部屋を細かく拡大して見れるし、アイテムもギミックも大量にある。オブジェクトクリックの処理をどうやるんだろうって思った。

現状

私は今回、今見てる部屋の面を変数roomnow=1みたいに入れておいて、その場面でドアの場所に置いてあるbuttonをクリックしたら、ドアが反応するみたいにした。

部屋は一つのImageパネルにつける画像をスクリプトで変更する形式にした。

github.com

こちらの方は、表示非表示(active)を駆使してやってた。

haruoroom.work

 

こちらの質問者は部屋画像を4枚並べて、カメラを移動させてた!

teratail.com

どうする?

あんまりUnityで2D脱出ゲーム作るの向いてない?

3Dで作る

3Dで作って、2Dっぽい画面遷移にしたほうがよさそう。レンダリングの問題はあるけど。

こちらとかそうだし。

senkouemaki.com

前3Dで脱出ゲームを作った時は、せっかく3Dなんだからぐるぐる動き回れるようにしよう!!って思ったら難しくて迷走してしまった。

bibinbaleo.hatenablog.com

アセット

脱出ゲーム専用ではないけどアドベンチャーゲームを作るアセットはあるそうです。

今半額で35ドル!

kitposition.hatenablog.com

デモがあった。

Physics demo | Adventure Creator

f:id:bibinbaleo:20190506154450p:plain

ちゃんと脱出ゲームっぽくていいですね!

それはいいとしてめっちゃデジャブを感じる。絶対やったことある。と思って過去記事検索したけどヒットしないな。。。

このデジャブ感じるの2回目だし。こわ・・・デジャブマン

専用ソフト

それかUnityはやめて専用のソフトを使うか。

アプリあった〜

www.4gamer.net

昔アプリビルダーっていうアプリ作れるサイトでも作ったけど、もうサービス終了してた。

bibinbaleo.hatenablog.com

さらにその昔Flashのソフトのparaflaを使って作ったけど、その時は割と簡単にできた気がする。アホな高校生でもできたんだから、Unityでやるよりは多分簡単だったはず。

と思ったら2018年の記事にparaflaがある!?え?滅んだのでは?

wanpa189.net

えっ???flashは死んだのでは????

最後に 

今度脱出ゲームを作るとしたら、3Dプロジェクトで2Dゲームっぽい見た目のを作ってみたいです。

 

こちらの本のチュートリアルの一つが脱出ゲームらしいです。2Dなのか3Dなのかよくわからない。