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

实例化GameObject后旋转异常问题求助

Unity实例化物体旋转异常问题修复

问题根因

你直接将欧拉角Y值传入Quaternion的构造函数是错误的——Quaternion构造函数的参数不是欧拉角,而是四元数的x/y/z/w分量。这种写法会生成无效的四元数,导致所有实例化物体的旋转出现不符合预期的结果(比如全部变成180度)。

修复方案

使用Unity提供的Quaternion.Euler()方法,将欧拉角转换为正确的四元数。这个方法会自动处理欧拉角到四元数的转换逻辑,保证旋转值准确生效。

修改后的关键代码

只需要修改SpawnATM函数中的四元数创建部分:

public void SpawnATM(int ATM, GameObject pr) {
    UnityEngine.Vector3 ATMPos = new UnityEngine.Vector3(MazePos[ATM,0], MazePos[ATM,1], MazePos[ATM,2]);
    // 替换原构造方式,用Euler方法生成对应Y轴旋转的四元数
    UnityEngine.Quaternion CoinQ = UnityEngine.Quaternion.Euler(0, MazePos[ATM,3], 0);
    Instantiate(pr, ATMPos, CoinQ);
}

补充说明

你数组中存储的是Y轴旋转的欧拉角数值,Quaternion.Euler(0, 角度值, 0)正好对应绕Y轴的旋转逻辑,完全匹配你的需求。之前用具体数值测试时可能巧合避开了构造方式的错误,但用数组取值时就暴露了核心问题。

内容的提问来源于stack exchange,提问作者FKso

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.13 20:53:12