完成了笔记一的基本位移后,如何对场景中的普通游戏物体实现一个手柄射线选中时的描边呢?
首先,给需要描边的物体挂载一个VRTK_OutlineObjectCopyHighlighter组件,新建一个脚本
public class Test_PointerMark : MonoBehaviour
{
public Color EnterColor, MarkerSetColor;
private VRTK_Pointer pointer;
private void Awake()
{
pointer = GetComponent<VRTK_Pointer>();
pointer.DestinationMarkerEnter += Pointer_DestinationMarkerEnter;
pointer.DestinationMarkerExit += Pointer_DestinationMarkerExit;
pointer.DestinationMarkerSet += Pointer_DestinationMarkerSet;
}
private void OnDestroy()
{
pointer.DestinationMarkerEnter -= Pointer_DestinationMarkerEnter;
pointer.DestinationMarkerExit -= Pointer_DestinationMarkerExit;
pointer.DestinationMarkerSet -= Pointer_DestinationMarkerSet;
}
private void Pointer_DestinationMarkerSet(object sender, DestinationMarkerEventArgs e)
{
HighLight(e.target, MarkerSetColor);
}
private void Pointer_DestinationMarkerExit(object sender, DestinationMarkerEventArgs e)
{
HighLight(e.target, Color.clear);
}
private void Pointer_DestinationMarkerEnter(object sender, DestinationMarkerEventArgs e)
{
HighLight(e.target, EnterColor);
}
private void HighLight(Transform target, Color color)
{
VRTK_BaseHighlighter highlighter = (target != null ? target.GetComponent<VRTK_BaseHighlighter>() : null);
if (highlighter != null)
{
highlighter.Initialise();
if (color != Color.clear)
{
highlighter.Highlight(color);
}
else
{
highlighter.Unhighlight();
}
}
}
}
完成脚本后,在inspector面板将控制器上的VRTK_Pointer指定给pointer,选择描边的颜色即可。