2014-10-07 1 views
-2

화합으로 나는 화살의 시작 부분에 피벗을 가진 화살표 스프라이트를 가지고있다.Unity3d 마우스 위치쪽으로 화살표를 돌림

이제 마우스를 가리키는 2d에서 화살표를 회전해야합니다.
lerp 또는 slerp으로해야하므로 마우스를 너무 빠르게 움직이면 거기로 이동하지 않지만 천천히 그 위치로 미끄러집니다.

+0

스택 오버플로에 오신 것을 환영합니다. 여기에 질문하는 좋은 방법은 아닙니다. 문제를 해결하기 위해 지금까지 아무 것도 시도한 적이 있습니까? 사람들이 자신의 것을 보여줄 수 있도록 먼저 노력을 보여주십시오. [FAQ] (http://stackoverflow.com/tour), [How to Ask] (http://stackoverflow.com/help/how-to-ask) 및 [도움말 센터] (http : // stackoverflow)를 읽어보십시오. .com/help)을 시작으로 사용하십시오. –

+0

처음으로 질문을 게시하는 것이 아닙니다. 다른 아이디어를보기 위해 의도적으로 만들었습니다. 사람들이 그렇게하지 않도록 광산 솔루션을 보여주고 싶지 않았습니다. – filipst

답변

0

화살표가 설정되는 방식이 모두 다르기 때문에 rotateTowards를 사용할 수 있습니까?

그래서 당신은 rotateTowards와 ScreenToWorldPoint를 사용할 수있는 경우

(PS, 기능 테스트되지 않은 직장에서 메신저 이후 : P)가 LERP 함수로

void Update() { 
    transform.rotateTowards(camera.ScreenToWorldPoint(new Vector3(Input.mousePosition.x, Input.mousePosition.y, camera.nearClipPlane)); 
} 

, 당신은해야 Check here for speed variable stuff

해피 코딩.

+0

화살표는 스프라이트입니다. 그것은 0,0에 있습니다. 피벗은 화살표의 맨 아래에 있으며 위쪽을 가리키고 있습니다. 그것은 아날로그 시계처럼 보일 것입니다, 화살표는 시계 방향처럼 마우스쪽으로 향해야합니다. 저는 이것을 사용하고 있지만 작동하지 않습니다. 앞면이 마우스쪽으로 회전하고 있습니다. 'float lookFactor = 0.5f; float distance = (transform.position.z - Camera.main.transform.position.z) * lookFactor; 벡터 3 위치 = 새 Vector3 (Input.mousePosition.x, Input.mousePosition.y, distance); position = Camera.main.ScreenToWorldPoint (position); transform.LookAt (position);' – filipst

0

매우 비슷한 질문에 대답했습니다. here. 간단하게하기 위해 다음 코드는 example from the Unity forum이며 z 축을 중심으로 객체를 회전하는 데 사용할 수 있습니다.

Vector3 pos = Camera.main.WorldToScreenPoint(transform.position); 
Vector3 dir = Input.mousePosition - pos; 
float angle = Mathf.Atan2(dir.y, dir.x) * Mathf.Rad2Deg; 
transform.rotation = Quaternion.AngleAxis(angle, Vector3.forward); 

Here is the Unity3D documentation for slerphere is the documentation for lerp. 이 예제에서 원하는 것을 수행하도록 코드를 수정해야합니다.

관련 문제