2014-10-25 3 views
0
내가 객체라는 발사체를 가지고 내가 화면 해상도 1090x1820 내 휴대폰을 만지지 곳 발사체가 나타나게하려면, 내 논리는 내가 여기에 문제

유니티 2D 객체의 위치는

을 가지고있다

:

#pragma strict 

var projectile:Transform; 
private var shoot:Transform; 

function Start() { 

} 


function Update() { 

    for (var i = 0; i < Input.touchCount; ++i) { 
     var touch:Touch = Input.GetTouch(i); 
     if (touch.phase == TouchPhase.Began) { 
      shoot = Instantiate(projectile) as Transform; 
      shoot.position.x = touch.position.x; 
      shoot.position.y = touch.position.y; 
     } 
    } 
} 

이 코드는 화면에 투사 체가 나타나지 않는다는 점을 제외하면 잘 작동합니다. 은 어떻게 든, 나는 유니티 편집기에서 객체를 넣어 시도하고 그것은 터치 위치를 디버깅하려고 x = -2y = -1 또는 x =-1y =-5도 너무 어서요을 보여주는 것하고

것은 내가 고칠 수있는 방법 x= 300y=90 등을 보여주는 것 이 ?

죄송합니다.

답변

1

너는 세계 좌표를 화면 위치와 섞고있다. 당신이 그렇게 코드가 유사 할 ScreenToWorldPoint를 사용해야합니다 것을 해결하려면 :

var worldPos : Vector3 = camera.ScreenToWorldPoint (touch.position)); 

    shoot.position.x = worldPos.x; 

    shoot.position.y = worldPos.y; 

이것은 당신이 논리를 이해하는 것이이 같은 검증되지 않은 코드가 너무 참조 용으로 만 사용됩니다.

+0

아케이드 @ 키프로스 사용해보기! 감사합니다 –

+1

! 감사합니다 형! 매력처럼 작동! –

+0

오신 것을 환영합니다. 기꺼이 도와 드리겠습니다! :) – Kypros

관련 문제