相机跟踪脚本在VR-Hands上使用延迟更新摧毁Raycast

时间:2018-05-13 21:46:34

标签: c# unity3d camera virtual-reality raycasting

我有一个Camera-Follow-Script跟随播放器使用“Late-Update”。它会移动我的整个VR-Player,包括VR-Hands,我有一个光线投射脚本和一个可视化光线投影的线条渲染器。

事实是,光线投射或线条播放器上下闪烁。我试着修复它一段时间,直到我发现它实际上是因为我的脚本中的更新后期正在移动整个vr-player,其中包含了手和光线投射。

当我将我的相机跟随脚本更改为“更新”而非“更新后期”时,一切都在使用光线投射,但播放器跟随移动是口吃。

这是我的Camera-Follow-Script:

public Transform player;

public float smoothSpeed = 0.125f;
public Vector3 offset;

private void LateUpdate()
{
    Vector3 desiredPosition = player.position + offset;
    Vector3 smoothedPosition = Vector3.Lerp(player.position, desiredPosition, smoothSpeed);
    transform.position = smoothedPosition;
}

1 个答案:

答案 0 :(得分:0)

只需使用一个LayerMask并将玩家放在一个单独的图层上,这样你的光线投射就不会碰到玩家的对手。如果你没有使用图层,那么它是加速你的物理处理的一个好方法(也就是说,你只能从玩家互动的角度对一些重要的东西进行光线投射,而physix不需要经过场景中的所有碰撞器获取你的光线投射。