You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.24 08:49:55