Raycasting

[最后更新时间:2020/01/30]

概述

Raycasting 是一个函数,用于确定用户指定的 Cubism 网格是否与任意坐标相交。
可以获得场景中任何物体与指定网格之间的点击/点击坐标和碰撞检测。
了解如何使用光线投射。

Cubism SDK for Unity 中的光线投射包括两个主要元素。

  1. 用于指定要判断的图形网格的组件
  2. 确定输入坐标和指定图形网格之间的碰撞的组件。

 

1. 指定要判断的图形网格的组件

使用 CubismRaycastable 指定用于碰撞检测的网格。

CubismRaycastable 通过附加到位于 [Root of Prefab] / Drawables / 下的 GameObject 来使用。
与附加游戏对象具有相同 ID 的图形网格将用于碰撞检测。

CubismRaycastable 具有设定该网格的碰撞检测精度的参数。

CubismRaycastable.Precision 有两个可配置的值,每个值如下。

  • BoundingBox

包围网格并具有水平或垂直边的矩形用作碰撞检测。
根据网格的形状,即使在网格外的坐标处也会执行碰撞检测,但它比三角形具有更好的性能。

  • Triangles

网格的形状被用作碰撞检测的范围。
虽然性能不如BoundingBox,但可以在准确的范围内做出判断。

 

 

2. 确定输入坐标与指定图形网格之间的碰撞的组件。

使用 Cubism Raycaster 获得实际的碰撞检测。
使用 Cubism Raycaster 时,将其附加到 Cubism Prefab 的根部。

当 CubismRaycaster 初始化时,获取对附加到 Prefab 的所有 CubismRaycastables 的引用。
在执行过程中追加/删除命中判断的网格时,会调用CubismRaycaster.Refresh()再次获取引用。

 

使用 CubismRaycaster.Raycast () 从坐标中获取碰撞检测。

 

CubismRaycaster.Raycast() 返回命中返回值并得到判断的网格数。
此外,对于作为自变量传递的CubismRaycastHit[]类型的实例,设定获得命中判断的网格的信息。

当多个网格在同一坐标上重叠时,CubismRaycaster.Raycast () 会达到 CubismRaycastHit [] 类型实例的元素数量。
如果超过元素重叠的数量,将不会获得超出网格的结果。

CubismRaycastHit 是一种结构,其中包含有关已获得碰撞检测的网格的信息。

  • Drawable

它是获得命中判断的图形网格的参考。

  • Distance

与指定坐标的距离。
origin 或 ray.origin 与 Drawable 的 Transform.position 之间的线性距离作为参数传递给 CubismRaycaster.Raycast ()。

  • LocalPosition

获得碰撞检测的图形网格的局部坐标。

  • WorldPosition

获得碰撞检测的是图形网格的世界坐标。

© 2010 - 2022 Live2D Inc.