2013-10-26 5 views
0

안녕하세요 저는 구형을 만들고 화면 중간에서 보는 방향으로 그것을 실행하려고합니다. 하지만 현재 중간에서 시작하지만 항상 같은 방향과 높이로 시작됩니다. 도움이 필요하시면 tanx에게 문의하십시오.화면 중앙에서 공을 쏴라 Unity

 #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

문제는 Vector3.forward가 Z 좌표 방향으로 한 단계에서와 같이 항상 벡터 (0,0,1)은 여기서 알 수있는 바와 같이 (이 유추 Y의 위쪽이고, x는 오른쪽이다)이다 이에

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

두 솔루션은 다음과 같습니다

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

1.) 카메라가 가리키는 방향으로 힘을 추가

지구본이 어떤 식 으로든 회전하지 않으므로 "AddRelativeForce"가 필요하지 않습니다. 그래서 "AddForce"와 "AddRelativeForce"는 같은 효과를냅니다.

2) 또는) 자신의 회전을 기준으로 (구를 앞으로 보내 다음 영역의 회전을 변경 : 간단

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

합니다. ive는 벗어났다. LookAt와 광선으로 시도. 매력처럼 작동합니다. –

관련 문제