Unity C#/混合器型号旋转不正确

Unity C#/混合器型号旋转不正确,c#,unity3d,rotation,blender,C#,Unity3d,Rotation,Blender,所以我在搅拌机里创建了一个旋转模型,导入unity,一切都很好,我为我的hub场景准备了一个旋转脚本,旋转效果很好 现在进入代码,试图旋转枪管看向敌人,看起来不太好 这里有一个简短的游戏视频来演示这个问题 turrent的桶面对的是一个完全不同的地方,然后是敌人我更愿意用代码解决这个问题,而不是从头开始重建模型,所以这就是我目前正在做的(那不起作用) private void Update(){ FlameForgedTime.UpdateTime(); 如果(isInGame){ 重新生成h

所以我在搅拌机里创建了一个旋转模型,导入unity,一切都很好,我为我的hub场景准备了一个旋转脚本,旋转效果很好

现在进入代码,试图旋转枪管看向敌人,看起来不太好

这里有一个简短的游戏视频来演示这个问题

turrent的桶面对的是一个完全不同的地方,然后是敌人我更愿意用代码解决这个问题,而不是从头开始重建模型,所以这就是我目前正在做的(那不起作用)

private void Update(){
FlameForgedTime.UpdateTime();
如果(isInGame){
重新生成hitpoint();
//寻敌
if(FlameForgedTime.Time-lastAttack>StatsHelper.Instance.GetStatValue(Stat.Speed)){
Collider[]col=Physics.OverlapSphere(transform.position,statHelper.Instance.GetStatValue(Stat.Range),LayerMask.GetMask(“敌人”);
如果(列长度!=0){
//找到最近的敌人
int closestinex=0;
float dist=Vector3.SqrMagnitude(col[closestIndex].transform.position-transform.position);
for(int i=1;i
因此,在我的turrent(父游戏对象)上,我有一个标签“Player”,因为turrent是在预加载场景中加载的,公共游戏对象字段无法访问

由于某种原因,Y轴是旋转轴

无论如何,我会找到离塔楼最近的敌人,然后进行观察,试图让炮塔观察敌人,然后向敌人射击。但是,正如您在视频中看到的那样,这并不能正常工作。模型上的“前进”轴(即枪管指向的方向)不符合Unity所说的前进轴

Unity中的“前进”沿正Z方向,因此您的模型与其变换的局部前进不一致(这是使用
LookAt()
时指向事物的方向)。看起来您的模型是沿正X轴向前对齐的

有三种方法可以解决此问题:

  • 在搅拌器中旋转并重新导出(最佳选项)
  • 创建一个空的父游戏对象,“成为”枪对象(也就是说,所有引用都指向这个新对象,任何脚本都从现在的位置移动到这里,等等),但将当前对象放在里面,并将现在的子变换旋转90度。这有时也称为“重新居中”。对于不属于您的资产,这有时是唯一的选择
  • 执行
    LookAt()
    后,按脚本旋转90度(不推荐)
  • 模型上的“前进”轴(即枪管指向的方向)与Unity所说的前进轴不一致

    Unity中的“前进”沿正Z方向,因此您的模型与其变换的局部前进不一致(这是使用
    LookAt()
    时指向事物的方向)。看起来您的模型是沿正X轴向前对齐的

    有三种方法可以解决此问题:

  • 在搅拌器中旋转并重新导出(最佳选项)
  • 创建一个空的父游戏对象,“成为”枪对象(也就是说,所有引用都指向这个新对象,任何脚本都从现在的位置移动到这里,等等),但将当前对象放在里面,并将现在的子变换旋转90度。这有时也称为“重新居中”。对于不属于您的资产,这有时是唯一的选择
  • 执行
    LookAt()
    后,按脚本旋转90度(不推荐)

  • 这里有一个简短的游戏视频来演示问题“视频在哪里?有一个链接说“演示”这是我单击视频链接时该视频链接不起作用的。它现在起作用了。这里有一个简短的游戏视频来演示问题“视频在哪里?有一个链接说“演示”这就是我点击视频链接时,它不工作的原因。它现在工作了。在搅拌机里旋转,你的意思是我需要做90度的旋转吗?还是我需要从头开始重建它?@FlamingGenius只需在搅拌器中旋转90度并保存它。在搅拌器中旋转是指我只需旋转90度?还是我需要从头开始重建它?@FlamingGenius只需在搅拌器中将它旋转90度,然后保存它。