2021年11月9日火曜日

Unityで花札を作る ver03: 札を回転させてみる

※もはやVRは先になりそうなので、タイトルをちょっと変更 

花札の札をめくる動作について考えてみます。
プログラミングで回転させるのは、地味に面倒です。




そこで、DOTWeenを使うと簡単に実現できます。

参考)Unity DOTween 入門

▼ソースコード
その場で回転ではなく、上に少し移動させながら回転させています。

using DG.Tweening;  //DOTween
using UnityEngine;

public class Fuda : MonoBehaviour
{
    void Start()
    {
        //移動(相対的にy軸へ0.5、0.5秒かけて移動)
        this.transform.DOMove(new Vector3(0f, 0.5f, 0f), 0.5f).SetRelative(true);
        //回転(90度、横回転)
        this.transform.DORotate(new Vector3(0f, 90f, 0f), 0.5f);
    }
}



実際には、回転が終わったら場に移動させたいです。
その場合は、Sequenceを使うとよいのですが

コルーチンとラムダ式を使う方が後々楽な気がします。
具体的には以下のような感じです。
using DG.Tweening;
using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class DebugCards : MonoBehaviour
{
    // Start is called before the first frame update
    void Start()
    {
        //コルーチンの呼び出し
        IEnumerator method = RotationFuda(this.transform, () => {
            Debug.Log("回転が終わった後にこの処理が実行される");

        });
        StartCoroutine(method);
    }

    //札を回転コルーチン
    //target: 回転対象のTransform
    //nextAction: 次に実行したい関数(ラムダ式で渡される)
    IEnumerator RotationFuda(Transform target, System.Action nextAction) {
        target.DOMove(new Vector3(0f, 1.0f, 0f), 1f).SetRelative(true);
        target.DORotate(new Vector3(0f, 90f, 360f), 1f);

        //1.5秒待機
        yield return new WaitForSeconds (1.5f);        

        //次の処理
        nextAction();        
    }

}


ラムダ式は無名関数と呼ばれており、関数だけど名前なしの使い捨て(その場限りの)関数っていう感じです。具体的には以下の処理です。
 () => {
      Debug.Log("回転が終わった後にこの処理が実行される");
  }

これ自体を引数として関数へ渡し、パラメータとして受け取りますがその際に「System.Action」で受け取ります。←ポイント

受け取った後は、そのまま関数として実行することができます。
  //次の処理
  nextAction();        

ラムダ式が便利すぎて多用していますが、ちょっと間違えると修正が大変なのがデメリットですね・・・

というわけで、札の動きがそれっぽくなりました。


普通の花札だとつまらないので、エフェクトを大量に使っていこうと思います。

2021年11月6日土曜日

Unity2020でUnity Physicsを使う(設定)

Unityの新しい物理演算の方式としてUnity Physicsというのがあります。
どうやら従来型よりも高速に動くということなので試してみよう!!
と思ったら、そもそも使うための設定がわからなかったのでメモです。

  1. プロジェクト設定から、Package ManagerのPreview版を使用するにチェックします


  2. Package Managerを開きます

  3. パッケージ種類をUnity Registryに変更します

  4. Package Manager の左上の+ボタンから Add package from git URL を選択します

  5. パッケージ名に「com.unity.physics」を入れ、Addをクリックします

  6. インストールが始まり、成功すれば追加されます


Hybrid Rendererも必要になりそうなので、同様の手順で「com.unity.rendering.hybrid」を追加しておきます。

手順の詳細は、Unityの公式ページに書いてありました。
2020から面倒になったようですね。

VRで花札を作ろう part02:ひとまず場に札を表示させてみる

VRで花札を作ろう part02 : ひとまず場に札を表示させてみる

花札の見た目だけでも先に作ろうと思い、花札を場に配るところまでを作成。3Dにしているだけでなんだかリアルに見えますね。スマホをイメージして縦長の画面にしました。



札はアセットを買ってしまおうか悩んだ末、フリーで配布していただいている素材をBlenderで3Dモデル化して使いました。48枚あるので地味に時間はかかりましたが・・・

▼【素材】花札 48枚+4枚セット
https://www.pixiv.net/artworks/47260765

そういえば、いつの間にかUnityのResourcesフォルダは非推奨になっていたのですね。
https://learn.unity.com/tutorial/assets-resources-and-assetbundles#5c7f8528edbc2a002053b5a7
花札は札が48枚あるので、プログラムで一気に読み込もうと思っていましたが非推奨と言われると微妙ですね。
良い方法が思いつかなかったので、全部Prefab化しておいて、プログラムに渡す方法にしてみましたがどうなんでしょうか・・・


2021年11月5日金曜日

[OculusQest] Tello x VR その2

2020年の2月ごろにやろうと計画しておきながらずっと放置していましたが、今年の三月に、とあるイベント向けに作り上げてみました。

その時の資料の抜粋です。
一番悩んでいたことは、どうやって操作しよう?っていう感じでしたが、 ちょうどハンドトラッキングがサポートされたので、ピンチング(指でわっかを作る)で操作することにしました。 
 結果、理想通りのものができましたが、操作は激ムズです笑

プログラミング部分については、「その1」で使ったライブラリをちょっとカスタマイズして動かしました。その辺は、またの機会に説明しようと思います。

VRで花札を作ろう part01

 長らく更新をしていませんでしたが、そろそろ新しいことをやろうと思いVRで花札を作ってみようかなと思っています。

まずは実験的に、Unity + WebGLで動く花札を作ってみます。

初めてWebGLでBuildしてみましたが、意外といい感じに動きますね。

▼実行時のイメージ










▼実際の実行(WebGL版)

 
 単純に花札を上から降らせてみただけです・・・