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にするとズレが無くなります。
実機でもいい感じ pic.twitter.com/pVQoDwQUhe
— りゅーあん (@ryuan_p) February 18, 2020
コメント