我可以旋转所有对象而不必分别为每个对象旋转吗?

时间:2019-04-17 18:49:29

标签: unity3d

我正在制作一个游戏,其中我以相同的值旋转所有对象。如果我能以某种方式旋转所有对象而不必在每个对象上使用transform.rotate函数,则这将对我有很大帮助(转换效率很低)。 我当时正在考虑使转换静态化,但这似乎是无法实现的。我也不能将它们放在一个对象中并移动它,因为它会改变它们的位置。您有什么建议吗?我们非常感谢您的帮助。

编辑:感谢您的答复。我的目标是旋转具有相同值但不是通用方式的对象。 我不想在每个对象中使用转换。

void Update()
{
    if (Input.GetMouseButton(0))
    {
        rotX = Input.GetAxis("Mouse X") * sensitivity * Mathf.Deg2Rad;
        transform.Rotate(Vector3.forward, rotX);
    }
}

我希望它们具有相同的transform.rotation和不同的transform.position和transform.scale。这种方式transform.Rotate()将仅使用一次,而不是对象数量的次数。 我想避免访问每个对象的变换。

2 个答案:

答案 0 :(得分:0)

您能给我们更详细的例子吗?在性能方面,如果没有示例代码,很难说出哪种方法对您而言更好。 在这里,您可以找到一些有关使用物理引擎(使用RigidBody.MoveRotation())与Transform.Rotatehttps://answers.unity.com/questions/294452/rotation-performance.html

更好的性能的见解。

答案 1 :(得分:0)

创建一个名为script的控制器。

UnityEngine.Object.FindObjectsOfType<GameObject>();

现在您有array个中的GameObject个。使用foreach或循环并设置transform.rotation

现在您可以一次移动所有对象。

GameObject[] allObjects = UnityEngine.Object.FindObjectsOfType<GameObject>() ;
foreach(object go in allObjects)
if (go.activeInHierarchy)
   print(thisObject+" is an active object");