MRTK开发问题:如何根据父物体旋转排列子GameObject
解决MRTK中子物体随父物体旋转排列的问题
问题核心是你用了世界空间的固定右侧向量Vector3.right,不管父物体怎么旋转,这个向量始终指向世界坐标系的X轴正方向。要让子物体跟着父物体的旋转方向排列,你需要换成父物体本地坐标系的右侧向量——也就是transform.right,它会随父物体的旋转同步变化。
修改后的代码如下:
var i = 0; foreach(var instance in instances) { // 替换Vector3.right为transform.right,基于父物体本地坐标系计算偏移 var position = transform.position + 0.33f * i * transform.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++; }
补充说明:
transform.right对应父物体自身坐标系的X轴正方向,当父物体绕Y轴旋转90度时,它的right方向会自动指向世界坐标系的Z轴正方向(也就是父物体的前方),子物体自然会排列到父物体的相对右侧/旋转后的前方。- 如果你需要子物体沿父物体的前方排列,直接把
transform.right换成transform.forward即可,逻辑同理。
内容的提问来源于stack exchange,提问作者Kleifker
相关产品推荐
相关产品推荐

