前言
在使用VRTK制作虚拟仿真项目的时候,会遇到强制头盔至目标点的功能
VRTK内有封装好的移动方法。
VRTK_BasicTeleport脚本内的方法ForceTeleport()
配置
需要配置的传送组件
代码
本文代码是直接可以其他脚本调用,把传送的目标位置赋值给ForceTeleport方法即可,
GetRotation方法则是让瞬移后的视角也朝向目标点的朝向。
如果有需要可以直接使用Vector3代替目标点。
public VRTK_BasicTeleport vRTK_BasicTeleport;
#region 强制瞬移
public void ForceTeleport(Transform tfr)
{
//vRTK_BasicTeleport.ForceTeleport(tfr.position);
Teleport(tfr);
//vRTK_BasicTeleport.Teleport(tfr.eulerAngles);
}
void Teleport(Transform trans)
{
Quaternion tempQ = Quaternion.Euler(trans.eulerAngles);
vRTK_BasicTeleport.ForceTeleport(trans.position, GetRotation(trans));
}
Quaternion GetRotation(Transform trans)
{
float offset = (m_playArea != null && m_headset != null ? m_playArea.eulerAngles.y - m_headset.eulerAngles.y : 0f);
return Quaternion.Euler(0f, trans.eulerAngles.y + offset, 0f);
}
#endregion