這是我的第一篇文章,所以如果我做錯了什麼,讓我知道它。我在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;
}
}
對不起我的英語,是不是我的母語。
請嘗試將相關代碼包含在您的問題主體中 - 請注意,我們不需要(甚至不需要)整個項目,只需根據您的航點處理移動/旋轉汽車的代碼即可。本網站希望問題是獨立的,這意味着所有解決問題的信息都應該在這篇文章中(即不要依賴非現場鏈接)。 – Serlite
是的,你是對的,我意識到後上傳的帖子。我要編輯帖子,包括相關的代碼。謝謝。 – ijromeo