2017-04-05 71 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

谢谢,这工作 –