2017-01-23 26 views
0

這是我的第一篇文章,所以如果我做錯了什麼,讓我知道它。我在Unity 5.5中做了一個2D汽車遊戲,帶有自頂向下的視圖。對於遊戲,我需要一些汽車有一個簡單的AI腳本,只是爲了跟上路徑。所以,我在網上搜索了一些符合我需求的東西,並發現(在我看來)一個非常好的實現。在這裏,我讓你在GitHub中的項目,由實現的所有者上傳,我想:https://github.com/mindcandy/lu-racerAI車團隊錯誤的旋轉

因此,我們創建一個帶有空GameObjects和相應碰撞器的路徑,我們必須有一輛車),並設置一個collider和一個rigidbody2d,我們有三個腳本「做魔術」。對於我的項目,我刪除了圈數的部分,因爲我的比賽不是一場比賽。那麼,我設置所有,一切正常!除了一件事:汽車的旋轉。

我認爲這是因爲教程遊戲是一個自上而下的視圖,但汽車從左到右,在我的遊戲也是自上而下,但汽車從下往上。因此,我的項目中汽車的精靈處於自頂而下的狀態,並且正在向上看,並且該汽車的github項目的精靈正在向右看(我想上傳圖像,但是看起來我不能這樣做是因爲我的聲望,對不起) 。

當然,在AI的作品非常好,車子跟着沒有問題的路徑,但有一個錯誤的方向轉動,就像這樣:aicar_rotation

我試圖在相關向量AICarMovement腳本和角度改變的事情,但沒有運氣,所以如果任何人都可以看看,並給我一隻手,我會很感激。如果有人想了解更多細節,請告訴我。我嘗試上傳更多的東西,如圖片或GIF,以顯示問題,但我不能這樣做,因爲聲譽。

這是代碼AICarMovement,我認爲我必須要改變的部分:

public class AICarMovement : MonoBehaviour { 
public float acceleration = 0.5f; 
public float braking = 0.3f; 
public float steering = 4.0f; 
private Rigidbody2D rigidb; 

Vector3 target; 

void Start() { 
    rigidb = GetComponent<Rigidbody2D>(); 
} 

public void OnNextTrigger(TrackLapTrigger next){ 
    target = Vector3.Lerp(next.transform.position - next.transform.right, next.transform.position + next.transform.right, Random.value); 
} 

void steerTowardsTarget() { 
    Vector2 towarNextTrigger = target - transform.position; 
    float targetRot = Vector2.Angle(Vector2.right, towarNextTrigger); 
    if(towarNextTrigger.y < 0.0f) { 
     targetRot = -targetRot; 
    } 
    float rot = Mathf.MoveTowardsAngle(transform.localEulerAngles.z, targetRot, steering); 
    transform.eulerAngles = new Vector3(0.0f, 0.0f, rot); 
} 

void FixedUpdate(){ 
    steerTowardsTarget(); 
    float velocity = rigidb.velocity.magnitude; 
    velocity += acceleration; 
    rigidb.velocity = transform.right * velocity; 
    rigidb.angularVelocity = 0.0f; 
} 

}

對不起我的英語,是不是我的母語。

+0

請嘗試將相關代碼包含在您的問題主體中 - 請注意,我們不需要(甚至不需要)整個項目,只需根據您的航點處理移動/旋轉汽車的代碼即可。本網站希望問題是獨立的,這意味着所有解決問題的信息都應該在這篇文章中(即不要依賴非現場鏈接)。 – Serlite

+0

是的,你是對的,我意識到後上傳的帖子。我要編輯帖子,包括相關的代碼。謝謝。 – ijromeo

回答

0

打開你的精靈以及spawn遊戲對象。這樣你就沒有花哨的行爲,而且看起來都很正確。

0

在steerTowardsTarget()中,第二行: 嘗試將Angle()的第一個參數從Vector2.right更改爲Vector2.up。

+0

嗨!是的,我以前試過,但沒有工作。汽車變得瘋狂,並且這樣做:http://gph.is/2jW0yZm – ijromeo

+0

你是否試圖變成你的精靈?或者把你的旋轉車作爲孩子使用一個空的遊戲物體?等一下。在第二行中是否更改了Vector2 **和** transform.right到.up?並且兩個transform.right在OnNextTrigger() – Emaro

+0

是的,如果我打開我的精靈,工作正常,但是當汽車產生時,出現在場景中旋轉,這看起來不那麼優雅哈哈。是的,我也試圖改變「正確的事情」,但沒有。該車甚至沒有這樣的方式:( – ijromeo