모바일 2D 게임의 터치 컨트롤에 가장 적합한 방법, 특히 브레이크 아웃/아카노이드 스타일 게임을위한 패들을 드래그하는 방법을 알고 싶었습니다. 모바일 게임의 인기를 고려할 때 이것이 표준 기능이었을 것이라고 생각했기 때문에 유니티 기능을 쉽게 구현할 수 없다면 놀랄 것입니다. 자습서에 대한 조언이나 링크, 특히 게임 개체 드래그가 크게 도움이 될 것입니다. 감사.유니티 - 2D 게임에서 게임 객체를 끌기위한 모바일 터치 컨트롤
0
A
답변
0
내 조언은 이와 같은 스크립트를 사용하여 (유니티 4.6에 도입) 유니티 UI 기능을 사용하는 것입니다 : (계속 당신이 raycasting UI를 항목을 활성화해야 작동이 들어
public class DragControl : MonoBehaviour, IPointerDownHandler, IPointerUpHandler
{
private bool m_Used;
private Vector3 m_MouseStartPosition;
private Vector3 m_ItemStartPosition;
public void Start()
{
m_Used = false;
}
public void Update()
{
if(m_Used)
{
GetComponent<RectTransform>().anchoredPosition = new Vector2(m_ItemStartPosition.x + (Input.mousePosition.x - m_MouseStartPosition.x), m_ItemStartPosition.y + (Input.mousePosition.y - m_MouseStartPosition.y));
// or you can set the y value to m_ItemStartPosition.y only if you don't want the paddle to move on Y axis
}
}
public void OnPointerDown(PointerEventData eventData)
{
m_Used = true;
m_MouseStartPosition = Input.mousePosition;
m_ItemStartPosition = GetComponent<RectTransform>().anchoredPosition;
}
public void OnPointerUp(PointerEventData eventData)
{
m_Used = false;
}
}
"레이 캐스트 Target "을 선택) UI 레이어에서 항목 위에있는 레이 캐스트를 차단하는 것도 없습니다.
또한 필요하지 않은 경우 Input.multiTouchEnabled = false;
을 사용하여 mutli 터치 입력을 사용 중지 할 수 있습니다.
0
감사합니다. – Kaz