2016-10-29 3 views
0

왼쪽 조이스틱을 사용하여 앞뒤 움직임을 제어하고 오른쪽 조이스틱을 사용하여 jetpack (모바일) 컨트롤러를 만들고 있습니다. 회전 및 상향 이동을 제어합니다. 수평이 & & 세로 축이 모두 0을 반환하더라도 사용자가 올바른 조이스틱을 만질 때마다 플레이어가 위쪽으로 이동해야합니다. 따라서 오른쪽 조이스틱 플레이어에 손가락이 있으면 GetButton 또는 GetKey (일부 키 코드)와 유사합니다.Unity 5 : 수평 및 수직 제로 일지라도 조이스틱에 손가락이 있는지 알아 보는 방법

+1

나는 혼란 스럽다. 이것은 물리적 컨트롤러입니까, 아니면 UI 요소가 컨트롤로 작동합니까? UI 요소에 대해 말하면 조이스틱 클래스에 public 함수를 추가하면 조이스틱을 선택할 때 true를 반환합니다. – bpgeck

+0

예, 실제 컨트롤러가 아닌 UI 요소에 대해 이야기하고 있습니다. 문제는 조이스틱에 손가락이 있으면 true를 반환하는 메서드를 찾지 못하는 것입니다. 예를 들어 Input.GetAxis ("HorizontalRotate")는 조이스틱에 손가락이 없어도 0 값을 반환하므로 사용할 수 없습니다. Input.GetButton ("HorizontalRotate")은 무엇이든지간에 false를 반환합니다. – Jonathan

답변

1

희망이 미래에 누군가를하는 데 도움이 : 나는 OnPointerUp과 조이스틱을 누르거나하지 않은 경우 확인하는 데 사용할 수 있습니다 OnPointerDown 방법이 발견

. 저를 사용하는 가장 쉬운 방법은 Standard Assets> Utility> Joystick.cs에서 몇 가지 사항을 변경하는 것이 었습니다. 내 수정 후 이러한 메서드는 다음과 같습니다.

public void OnPointerUp(PointerEventData data) 
{ 
    transform.position = m_StartPos; 
    UpdateVirtualAxes(m_StartPos); 

    if (data.rawPointerPress.name == "MobileJoystick_right") { 
     rightJoystickPressed = false; 
    } 
} 

public void OnPointerDown(PointerEventData data) { 
    if (data.pointerEnter.name == "MobileJoystick_right") { 
     rightJoystickPressed = true; 
    } 
} 

그래서 기본적으로 If 문을 추가했습니다. 이제 다른 스크립트에서 rightJoystickPressed 부울 값에 액세스하여 이동하지 않아도 조이스틱이 눌러져 있는지 확인합니다.