我实现了一个 MRTK 应用程序。如果我单击按钮,我想将 N 个游戏对象排列在父游戏对象旁边。
子游戏对象被创建。
问题是我的代码片段“位置”的计算。
var i = 0;
foreach(var instance in instances) {
var position = transform.position + 0.33f * i * Vector3.right;
var forward = transform.forward;
forward.y = Mathf.Clamp(forward.y, 0f, 0.5f);
forward.Normalize();
var rotation = Quaternion.LookRotation(forward, Vector3.up);
var presenter = Instantiate(prefab, position, rotation,
MixedRealityPlaySpace.Instance.transform).GetComponent<Presenter>();
i++;
}
目前每个游戏对象对于父级来说都是正确的。如果我将父级绕 Y 旋转 90 度,则游戏对象不应出现在父级的右侧。相反,他们应该站出来。
我知道父级的旋转值,但我不知道如何计算我替换 Vector3.right 的值。
我尝试了多种计算 vector3 值的方法,但没有任何效果。
Vector3.right
返回指向右侧(沿 x 轴)的 global 向量。如果我没记错的话,要实现你想要的,你所需要做的就是采用 local 右向量,意思是 transform.right
。这假设脚本附加到您的父对象。否则,只需使用对其的引用并应用相同的原则 (parentObj.transform.right
)。