从屏幕中间的团队射球

时间:2013-10-26 18:54:12

标签: unity3d unityscript

您好我正在尝试创建一个球体并从我从屏幕中间看的方向启动它。 但是我目前从中间发射,但始终在同一方向和高度。 tanx任何帮助。

     #pragma strict
         private var globe:GameObject;
              var globeMaterial:Material;
              private var shootIndex:boolean;

               function Start () {

}

function Update () {



if(Input.GetMouseButtonDown(0))
{
if (shootIndex==false){
globe=GameObject.CreatePrimitive(PrimitiveType.Sphere);
globe.renderer.material=globeMaterial;
globe.AddComponent(Light);

globe.light.color=Color.blue;
globe.AddComponent(Rigidbody);

//globe.transform.position=Camera.main.ScreenToViewportPoint(Input.mousePosition);
globe.transform.position=Camera.main.transform.position;
globe.transform.localScale=Vector3(0.5,0.5,0.5);


globe.rigidbody.AddRelativeForce(Vector3.forward*1000);

shootIndex=true;

}
else if (shootIndex==true){
Destroy(globe);
shootIndex=false;
}

}

}

1 个答案:

答案 0 :(得分:0)

你的问题是Vector3.forward总是Vector(0,0,1),因为朝向z坐标的一步(在这个类比中y向上,x是向右),如下所示:

http://docs.unity3d.com/Documentation/ScriptReference/Vector3-forward.html

两个解决方案是:

1。)按照相机指向的方向添加力:

globe.rigidbody.AddForce(Camera.main.transform.forward * 1000);

你不需要“AddRelativeForce”,因为你的Globe没有以任何方式旋转。所以“AddForce”和“AddRelativeForce”具有相同的效果。

2。)或者改变球体的旋转,然后向前发送球体(相对于它自己的旋转):

globe.transform.rotation = Camera.main.transform.rotation;
globe.rigidbody.AddRelativeForce(Vector3.forward * 1000);