【问题标题】:Unity how to set the radius of a sphere in global scale?Unity如何在全局范围内设置球体的半径?
【发布时间】:2020-07-03 08:45:24
【问题描述】:

当球体是子球体时,它会继承其父球体的比例。球体总是变成椭球体。有没有办法将该球体的半径设置为某个数字,无论其父级的比例是多少?

【问题讨论】:

  • 祖先变换中是否有旋转?
  • z轴有90度的旋转
  • include the hierarchy in the question 还显示哪个游戏对象是球体以及哪些游戏对象在其变换中具有旋转和缩放

标签: c# unity3d


【解决方案1】:

如果没有一个祖先被旋转,有一个简单的解决方案:

将本地比例设置为父级lossyScale 的倒数。将其放入LateUpdate 将保证其比例是在其任何祖先的Update 方法更改其比例之后设置的。如果祖先的任何LateUpdates 中的比例发生变化,您可能需要查看Script Execution Order Settings 以将球体的脚本设置为最后执行。

例如:

public void LateUpdate(){
    Vector3 parentScale = transform.parent.lossyScale;
    transform.localScale = new Vector3(1f/parentScale.x, 1f/parentScale.y, 
            1f/parentScale.z);
}

【讨论】:

  • 它仍然是一个椭球体
猜你喜欢
  • 1970-01-01
  • 2022-07-20
  • 2010-10-21
  • 1970-01-01
  • 1970-01-01
  • 2021-11-23
  • 1970-01-01
  • 2019-06-27
  • 2022-08-24
相关资源
最近更新 更多