Unitytranform.forward不断变化

Unity tranform.forward is constanly changing

所以我正在开发一个开门系统,如果用户将屏幕中间的焦点放在门把手上,我会通过 Raycast 检查。这是我的代码中不起作用的部分:

private void Update()
{
    if (Physics.Raycast(Camera.transform.position, Camera.transform.forward, out rayHit, Distance))
    {
        Debug.DrawRay(Camera.transform.position, Camera.transform.forward, Color.blue);
        Collider col = rayHit.collider;
        if (col.tag == DoorKnopTag)
        {
            DoorIndicator.SetActive(true);
        }
        else
        {
            DoorIndicator.SetActive(false);
        }
    }
    else
        DoorIndicator.SetActive(false);
}

所以我没有放入检查玩家选择门把手时鼠标是否被点击的代码,但我确定这不是问题所在。

问题是当我检查场景中的光线时,线条闪烁得非常厉害。我调试了一下,得出的结论是,即使我不更改 Camera.tranform.positionCamera.transform.forward 也在不断变化。当我将 Physics.Raycast 的方向更改为常量 Vector3 时,它不再闪烁,所以我认为问题出在 transform.forward 中。但是我看不到如何修复它。

尝试使用 FixedUpdate() 而不是 Update()。

对于物理事件,您应该使用 FixedUpdate(), 对于图形事件,您应该使用 Update()。

光线投射闪烁的原因大部分是从碰撞器投射光线造成的。检查您是否在光线投射原点上有对撞机。