2017-04-05 64 views
0

在我的代碼中,我製作了一個飛行物,拍了子彈。剛體連接到子彈3d對象,Cube變量連接到空遊戲對象。代碼的問題是子彈在起始位置產生在立方體的位置(0,0,0)而不是「飛行物體」的當前位置。順便說一句,這都是用Unity C#編寫的。我已經查了幾次這個問題,但大多數建議都是代碼的變化,這些代碼不起作用,或者需要更多關於每個事物連接的信息。腳本連接到飛行物體。對不起,變量名稱。代碼如下:我的空對象不被我的項目識別爲移動

using System; 
using System.Collections; 
using System.Collections.Generic; 
using UnityEngine; 


    public class SHooting : MonoBehaviour { 
    public Rigidbody Sphere; 
    public Transform Cube; 

    void Update() { 
     if (Input.GetKey(KeyCode.Q)) 
     { 
      Rigidbody a; 

      a = Instantiate(Sphere, Cube.forward, Cube.rotation) as Rigidbody; 
      a.AddForce(Cube.forward * 200); 

     } 
    } 
} 
+1

使用重載的'Instantiate(...)'方法,它需要參數的位置。 –

+1

@ m.rogalski他已經在使用它,唯一的問題是他在那個地方使用了一個方向向量'Cube.forward'。 – Iggy

+0

@Iggy好吧,對不起,我的壞。剛剛弄清楚了他的錯誤。 –

回答

3

你設置的位置Cube.forward這將可能是等於像Vector3(0,1,0);

你想要做的,而不是什麼是採取立方的位置用Cube.transform.position

讓你的實例化應該是這樣的:

a = Instantiate(Sphere, Cube.transform.position, Cube.rotation) as Rigidbody;

+0

你說他應該使用'Cube.transform.position',但你使用'Cube.forward'來代替。 :) –

+1

@ m.rogalski哎呀!感謝您指出這一點,我改變了它 – Shogunivar

+0

謝謝,這工作 –