簡體   English   中英

Unity C#/ Blender模型無法正確旋轉

[英]Unity C#/Blender Model not rotating correctly

因此,我在攪拌器中創建了一個turrent模型,並導入了一個統一體,一切看起來都不錯。我為我的中心場景添加了一些旋轉腳本,並且旋轉效果很好

現在進入嘗試旋轉槍管以向敵人看去的代碼看起來並不好

以下是一段簡短的游戲視頻,以演示該問題

示范

動盪的槍管正面臨着一個與敵人完全不同的地方,我更願意在代碼中解決敵人,而不是從頭開始重建模型,所以這就是我目前正在做的事情(那是行不通的)

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嘗試使炮塔看向敵人,然后向敵人射擊,但是如視頻所示,它無法正常工作

模型上的“前向”軸(即槍管指向的方向)與Unity所說的前向軸不一致。

Unity中的“前進”沿Z軸的正方向,因此您的模型與變換的局部前向不LookAt()這是使用LookAt()時指向事物的方向)。 看起來您的模型是沿着正X軸與向前對齊。

有三種方法可以解決此問題:

  1. 在Blender中旋轉並重新導出(最佳選擇)
  2. 創建一個空的父游戲對象,該對象“變成”槍對象(也就是說,所有引用都指向該新對象,所有腳本都從當前位置移動到此處,依此類推),但是您將當前對象放入其中並旋轉了現在的對象-兒童變換90度。 有時也稱為“重定中心”。 對於不是您的資產,有時這是唯一的選擇。
  3. 執行LookAt()之后,按腳本方式旋轉90度(不推薦)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM