您好我正在尝试创建一个球体并从我从屏幕中间看的方向启动它。 但是我目前从中间发射,但始终在同一方向和高度。 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;
}
}
}
答案 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);