MRTK - 根据父级的旋转排列游戏对象

问题描述 投票:0回答:1

我实现了一个 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 值的方法,但没有任何效果。

unity-game-engine game-physics mrtk
1个回答
0
投票

Vector3.right
返回指向右侧(沿 x 轴)的 global 向量。如果我没记错的话,要实现你想要的,你所需要做的就是采用 local 右向量,意思是
transform.right
。这假设脚本附加到您的父对象。否则,只需使用对其的引用并应用相同的原则 (
parentObj.transform.right
)。

© www.soinside.com 2019 - 2024. All rights reserved.