반응형
아래 코드는 이동의 Diff를 Vector3값으로 반환하는 매소드이다.
이 값을 이용하여 Camera의 Transform을 조정하면 된다.
한손가락
private Vector2 nowPos, prePos;
private Vector2 movePosDiff;
private Vector2 getTouchDragValue()
{
movePosDiff = Vector3.zero;
if(Input.touchCount == 1)
{
Touch touch = Input.GetTouch (0);
if(touch.phase == TouchPhase.Began)
{
prePos = touch.position - touch.deltaPosition;
}
else if(touch.phase == TouchPhase.Moved)
{
nowPos = touch.position - touch.deltaPosition;
movePosDiff = (Vector2)(prePos - nowPos) * Time.deltaTime;
prePos = touch.position - touch.deltaPosition;
}
}
return movePosDiff;
}
}
두손가락
SelectionBox와 Input이 겹쳐서 두손가락으로 드래그 이동 구현.
위 코드랑 원리는 같고, 두 손가락의 중앙값을 기준으로 삼는다.
if문은 두번째로 터치된 손가락만 가지고 판별하면 됨.
private Vector2 nowPos, prePos;
private Vector2 movePosDiff;
private Vector2 getTouchDragValue()
{
movePosDiff = Vector3.zero;
if(Input.touchCount == 2)
{
Touch touchZero = Input.GetTouch(0);
Touch touchOne = Input.GetTouch(1);
if(touchOne.phase == TouchPhase.Began)
{
prePos = ((touchZero.position - touchZero.deltaPosition) + (touchOne.position - touchOne.deltaPosition)) / 2;
}
else if(touchOne.phase == TouchPhase.Moved)
{
nowPos = ((touchZero.position - touchZero.deltaPosition) + (touchOne.position - touchOne.deltaPosition)) / 2;
movePosDiff = (Vector2)(prePos - nowPos) * Time.deltaTime;
prePos = ((touchZero.position - touchZero.deltaPosition) + (touchOne.position - touchOne.deltaPosition)) / 2;
}
}
return movePosDiff;
}
}
반응형
'Unity > Unity 리서치' 카테고리의 다른 글
Android Build시 프레임드랍 문제 (0) | 2021.06.11 |
---|---|
Pinch Zoom (두손가락, 세손가락) (0) | 2021.06.11 |
Time.deltaTime (0) | 2021.06.11 |
Camera Panning (0) | 2021.06.10 |
[RTS Engine] Camera관련 코드 (0) | 2021.06.10 |