2016-03-25 24 views
2

Bir C# Script kullanarak birlik içinde bir araba yaratmaya çalışıyordum, her şey iyi görünüyor, araba 1 problem dışında sola ve sağa döner. Sadece kodunuzu test ettikAraç kodumdaki sorun nedir?

using UnityEngine; 
using System.Collections; 

public class Car : MonoBehaviour { 
    private Rigidbody carRigid; 
    public int speed; 
    public int rotateSpeed; 

    // Use this for initialization 
    void Start() { 
     carRigid = GetComponent<Rigidbody>(); 

    } 

    // Update is called once per frame 
    void Update() { 

    } 
    void FixedUpdate(){ 
     if (Input.GetButton("Forward")){ 
      carRigid.AddForce (transform.forward * speed * Time.deltaTime); 
} 
     if (Input.GetButton("Reverse")){ 
      carRigid.AddForce (transform.forward * -speed * Time.deltaTime); 
     } 

     if (Input.GetButton("Left")){ 
      transform.Rotate (0, rotateSpeed, 0); 
     } 

     if (Input.GetButton("Right")){ 
     transform.Rotate (0, rotateSpeed, 0); 
     } 
    } 
} 
+0

Aracınız dönmediğiniz zaman ileri ve geri gidiyor mu? – Tom

+0

Hayır, her zaman yanlara gider. Döndürme düğmelerine hiç basmadım bile. – Simplexible

cevap

1

Aracınız, istediğiniz eksenden farklı başka bir eksende hareket ediyor. transform.right/transform.left veya transform.up/transform.down öğelerini deneyin.

+0

Bu işe yaradı, teşekkürler, "transform.forward" yerine "transform.right" eklemek ve "speed" ve "-speed" 'i değiştirmek zorunda kaldım. Bazı nedenlerden dolayı "transform.left" mevcut değil. – Simplexible

1

: Ben ileri veya geriye doğru tuşlara bastığınızda, araba hareket eder sol ve sağ yerine ileriye ve geriye doğru, ben benim koduyla yanlış bir şey göremiyorum, burada benim kod boş bir birlik sahnesinde ve bence sizce AddForce() suçlu!

Ben

if (Input.GetKey(KeyCode.W)) 
{ 
    transform.position += transform.forward * speed * Time.deltaTime; 
} 

kullanılan ve bu büyük çalışıyor görünüyor!

+0

Belki AddRelativeForce olmalı? –

+0

Bu, genellikle hareket için 'transform.position' ve atlama gibi şeyler için katı bir araç kullanırım. – Tom

0

Belki de yerel ileri doğru olmayan bir 3B modelini içe aktardığınız için.

Bazı seçenekleriniz var: 1) 3B modelleme programında onu tekrar dışa aktarın.

2) Boş bir GameObject oluşturun ve bunu aracınızın ebeveyni haline getirin. Rijit cismi ve ilgili kodları bu GameObject'e atayın ve araba modelini sabitleninceye kadar çevirin (90 derece sanırım). 3) modelinizin dönüşüne bağlı olarak transform.right veya transform.left komutunu kullanın.

İlk tercihimi şahsen tercih ederim.