Live2Dの当たり判定実装についてメモ

Live2D

Live2D SDKを使ってUnityで当たり判定を実装する為の説明が公式にありますが、基本的には

  • Raycastを実行するコンポーネント(CubismRaycaster)をモデルにアタッチ
  • 当たり判定に使用するアートメッシュ(Drawables以下)にCubismRaycastableをアタッチ
  • 以下のスクリプトをモデルにアタッチ
using UnityEngine;
using Live2D.Cubism.Framework.Raycasting;

public class CubismHitTest : MonoBehaviour
{

    private void Update()
    {
        // Return early in case of no user interaction.
        if (!Input.GetMouseButtonDown(0))
        {
            return;
        }


        var raycaster = GetComponent<CubismRaycaster>();
        // Get up to 4 results of collision detection.
        var results = new CubismRaycastHit[4];


        // Cast ray from pointer position.
        var ray = Camera.main.ScreenPointToRay(Input.mousePosition);
        var hitCount = raycaster.Raycast(ray, results);


        // Show results.
        var resultsText = hitCount.ToString();
        for (var i = 0; i < hitCount; i++)
        {
            resultsText += "n" + results[i].Drawable.name;
        }


        Debug.Log(resultsText);
    }
}

注意点

CameraがPerspectiveだとタッチ判定位置がずれるみたいです。Orthographicにするとズレが無くなります。

1 Star2 Stars3 Stars4 Stars5 Stars (まだ投票されていません)
読み込み中...

コメント

タイトルとURLをコピーしました