왼쪽 조이스틱을 사용하여 앞뒤 움직임을 제어하고 오른쪽 조이스틱을 사용하여 jetpack (모바일) 컨트롤러를 만들고 있습니다. 회전 및 상향 이동을 제어합니다. 수평이 & & 세로 축이 모두 0을 반환하더라도 사용자가 올바른 조이스틱을 만질 때마다 플레이어가 위쪽으로 이동해야합니다. 따라서 오른쪽 조이스틱 플레이어에 손가락이 있으면 GetButton 또는 GetKey (일부 키 코드)와 유사합니다.Unity 5 : 수평 및 수직 제로 일지라도 조이스틱에 손가락이 있는지 알아 보는 방법
0
A
답변
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 부울 값에 액세스하여 이동하지 않아도 조이스틱이 눌러져 있는지 확인합니다.
나는 혼란 스럽다. 이것은 물리적 컨트롤러입니까, 아니면 UI 요소가 컨트롤로 작동합니까? UI 요소에 대해 말하면 조이스틱 클래스에 public 함수를 추가하면 조이스틱을 선택할 때 true를 반환합니다. – bpgeck
예, 실제 컨트롤러가 아닌 UI 요소에 대해 이야기하고 있습니다. 문제는 조이스틱에 손가락이 있으면 true를 반환하는 메서드를 찾지 못하는 것입니다. 예를 들어 Input.GetAxis ("HorizontalRotate")는 조이스틱에 손가락이 없어도 0 값을 반환하므로 사용할 수 없습니다. Input.GetButton ("HorizontalRotate")은 무엇이든지간에 false를 반환합니다. – Jonathan