找回密码
 立即注册
查看: 327|回复: 0

[简易教程] Live2D 在 Unity 中的点击交互

[复制链接]
发表于 2021-12-23 13:46 | 显示全部楼层 |阅读模式
在 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[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.Drawable.name;
        }
        Debug.Log(resultsText);
    }
}
与 Unity 交互--详细文档

参考链接:
懒得打字嘛,点击右侧快捷回复 【右侧内容,后台自定义】
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Unity开发者联盟 ( 粤ICP备20003399号 )

GMT+8, 2024-5-6 04:52 , Processed in 0.088228 second(s), 25 queries .

Powered by Discuz! X3.5 Licensed

© 2001-2024 Discuz! Team.

快速回复 返回顶部 返回列表