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

Unity中transform.LookAt实例化对象朝向偏离90度问题求助

问题解决:LookAt后攻击预制体朝向偏离90度

这种情况大概率是预制体自身的前向轴与Unity默认前向轴不匹配导致的——Unity的LookAt方法默认会让对象的Z轴指向目标,但你的攻击预制体可能是用X轴或Y轴作为视觉上的“前方向”。

给你两个直接的解决思路:

方法1:修改预制体自身朝向(推荐)

在Unity编辑器中打开攻击预制体,选中模型对象,在Inspector面板调整旋转角度,让模型的“正面”朝向与对象的Z轴方向一致(可通过Scene视图的坐标轴图标确认)。保存预制体后,再用原代码实例化调用LookAt,朝向就会正确。

方法2:代码中修正旋转偏移

如果不想修改预制体,可以在调用LookAt后,给对象的旋转叠加一个90度的偏移,根据实际偏离方向调整轴:

GameObject spawnedThunderingStormAttack = Instantiate(thunderingStormAttack, transform.position, Quaternion.identity );
spawnedThunderingStormAttack.transform.LookAt(Player.Instance.transform.position);
// 假设是绕Y轴偏离90度,根据实际情况替换轴和角度
spawnedThunderingStormAttack.transform.rotation *= Quaternion.Euler(0, 90, 0);

或者也可以直接在实例化时计算正确的旋转,跳过默认的Quaternion.identity:

var targetPos = Player.Instance.transform.position;
var direction = targetPos - transform.position;
// 这里的欧拉角偏移根据你的预制体朝向调整
var targetRotation = Quaternion.LookRotation(direction) * Quaternion.Euler(0, 90, 0);
GameObject spawnedThunderingStormAttack = Instantiate(thunderingStormAttack, transform.position, targetRotation);

另外你之前尝试的方向向量加减、归一化对这个问题没用,因为LookAt内部会自动计算方向,核心问题还是轴的匹配。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.22 01:13:14