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.position
,Camera.transform.forward
也在不断变化。当我将 Physics.Raycast
的方向更改为常量 Vector3 时,它不再闪烁,所以我认为问题出在 transform.forward
中。但是我看不到如何修复它。
尝试使用 FixedUpdate() 而不是 Update()。
对于物理事件,您应该使用 FixedUpdate(),
对于图形事件,您应该使用 Update()。
光线投射闪烁的原因大部分是从碰撞器投射光线造成的。检查您是否在光线投射原点上有对撞机。
所以我正在开发一个开门系统,如果用户将屏幕中间的焦点放在门把手上,我会通过 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.position
,Camera.transform.forward
也在不断变化。当我将 Physics.Raycast
的方向更改为常量 Vector3 时,它不再闪烁,所以我认为问题出在 transform.forward
中。但是我看不到如何修复它。
尝试使用 FixedUpdate() 而不是 Update()。
对于物理事件,您应该使用 FixedUpdate(), 对于图形事件,您应该使用 Update()。
光线投射闪烁的原因大部分是从碰撞器投射光线造成的。检查您是否在光线投射原点上有对撞机。