资源大湿 发表于 2021-12-23 13:46

Live2D 在 Unity 中的点击交互

在 Live2D 编辑器和查看器中的操作

参考链接:
简单来说,就是在编辑器中生成碰撞艺术网格,然后将其加到纹理图集中。然后在查看器中设置 Hit Area 的名称。
与 Unity 交互--简单教程

参考链接:
虽然可以使用 Unity 的 Collider 来实现相似的点击交互效果,但在此只讲述官方这一套脚本的使用流程。
在 SDK 的/Assets/Live2D/Cubism/Samples/Raycasting中包含了点击交互的 Sample,可以参考。
首先将 Live2D 的模型资源正确导入到 Unity 中。
然后是简单的三个步骤:

[*]在模型根节点添加Cubism Raycaster脚本
[*]在具体的 ArtMesh 上挂载Cubism Raycastable脚本(实测模型导入后会自动添加, 不用手动操作)
[*]在代码中使用CubismRaycaster.Raycast函数
Cubism Raycastable 的脚本中,可以设置网格的碰撞检测精度:

[*]Bounding Box:精度低,消耗低。
[*]Triangles:精度高,消耗高。
在 Unity 中使用如下代码:
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;
      // 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.Drawable.name;
      }
      Debug.Log(resultsText);
    }
}
与 Unity 交互--详细文档

参考链接:
页: [1]
查看完整版本: Live2D 在 Unity 中的点击交互