Unity C#/ Blender模型无法正确旋转

时间:2017-05-26 15:58:03

标签: c# unity3d rotation blender

所以我在搅拌机中创建了一个turrent模型,导入到统一中,一切都很好看,我有一个小旋转脚本,为我的中心场景放置togeather,旋转效果很好

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

这是一个简短的游戏视频来展示这个问题

Demonstration

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

private void Update(){
        FlameForgedTime.UpdateTime ();

        if (isInGame) {
            RegenerateHitpoint ();
            //Look for enemy
            if (FlameForgedTime.Time - lastAttack > StatsHelper.Instance.GetStatValue (Stat.Speed)) {
                Collider[] col = Physics.OverlapSphere(transform.position,StatsHelper.Instance.GetStatValue (Stat.Range),LayerMask.GetMask("Enemy"));
                if (col.Length != 0) {
                    //find closest enemy
                    int closestIndex = 0;
                    float dist = Vector3.SqrMagnitude (col [closestIndex].transform.position - transform.position);
                    for (int i = 1; i < col.Length; i++) {
                        float newDistance = Vector3.SqrMagnitude (col [i].transform.position - transform.position);
                        if (newDistance < dist) {
                            dist = newDistance;
                            closestIndex = i;
                        }
                    }
                    //shoot enemy
//Rotate turrent to look at enemy                   GameObject.FindGameObjectWithTag("Player").transform.LookAt(col[closestIndex].transform);
                    ShootEnemy(col[closestIndex].transform);
                    lastAttack = Time.time;
                }
            }
        }
    }

所以在我的turrent(父游戏对象)上,我有标签“Player”,因为turrent被加载到预加载器场景中,并且公共GameObject字段无法访问

由于某种原因,Y是电流在

上旋转的轴

无论如何,我得到最接近塔的敌人,然后做一个LookAt试图让炮塔看敌人然后射击敌人,但是你看不到正常情况,你可以通过视频看到

1 个答案:

答案 0 :(得分:2)

&#34;前进&#34;模型上的轴(即枪管指向的方向)与Unity所说的前轴不对齐。

&#34;正向&#34;在Unity中沿着正Z方向,所以你的模型并没有与其变换的本地前锋对齐(这是使用LookAt()时指向的东西)。看起来你的模型沿着正X轴向前对齐。

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

  1. 在Blender中旋转并重新导出(最佳选项)
  2. 创建一个空的父游戏对象,&#34;成为&#34;枪对象(也就是说,所有引用指向这个新对象,任何脚本从它们现在移动到此处等等),但是你将当前对象放在里面并将now-child变换旋转90度。这也被称为&#34;重新定位&#34;有时。对于不属于您的资产,这有时是唯一的选择。
  3. 执行LookAt()(不推荐)
  4. 后,以脚本方式旋转90度