참고 유튜브 : https://www.youtube.com/watch?v=NqrJHj9xlqY
마우스 입력 대신 터치를 사용하는 방법.
touch를 사용해서 유니티 모바일 이동을 구현해보자.
PlayerBehaviour 스크립트에 코드를 다음과 같이 변경해준다.
1. 새로운 함수를 만들어준다.
/// <summary>
/// 어느 방향으로 플레이어를 횡으로 이동시킬까
/// </summary>
/// <param name ="pixelPos"> 플레이어가 터치 혹은 클릭한 위치 </param>
/// <returns> x축에서 움직일 방향 </returns>
private float CalculateMovement(Vector3 pixelPos)
{
// 0과 1 스케일로 변환한다.
var worldPos = Camera.main.ScreenToViewportPoint(pixelPos);
float xMove=0;
// 스크린 오른쪽을 누른 경우
if (worldPos.x < 0.5f)
{
xMove = -1;
}
// 스크린 왼쪽을 누른 경우
else
{
xMove = 1;
}
// horizontalSpeed 값을 새로운 값으로 지정
return xMove * leftRightSpeed;
}
2. FixedUpdate() 함수를 변경한다.
private void FixedUpdate()
{
// 좌우로 움직이는지 확인
var horizontalSpeed = Input.GetAxis("Horizontal") * leftRightSpeed;
// 실행을 유니티 에디터에서 하는지, 독립 빌드에서 하는지 확인한다.
#if UNITY_STANDALONE || UNITY_WEBPLAYER || UNITY_EDITOR
// 양옆으로 움직이는지 확인한다
horizontalSpeed = Input.GetAxis("Horizontal") * leftRightSpeed;
// 마우스를 누르고 있으면 or 모바일에서 스크린을 누르고 있으면
if (Input.GetMouseButton(0))
{
horizontalSpeed = CalculateMovement(Input.mousePosition);
}
// 모바일 기기에서 실행되고 있는지 확인한다.
#elif UNITY_IOS || UNITY_ANDROID
// 입력이 0개 이상의 터치를 감지했는지 체크
if (input.touchCount > 0)
{
// 첫번째 터치를 저장한다.
Touch touch = input.touches[0];
horizontalSpeed = CalculateMovement(touch.position);
}
#endif
rb.AddForce(horizontalSpeed, 0, autospeed);
}
유니티 플레이어 3D 캐릭터 움직임, 이동 시키기 (0) | 2023.07.05 |
---|---|
17. 유니티 맵(바닥) 시간마다 줄어드는 효과 (0) | 2023.06.23 |
15. 유니티 마우스 클릭 이벤트, 마우스 입력 사용하기 (0) | 2023.06.11 |
14. 유니티 안드로이드 프로젝트 빌드하기(2) (0) | 2023.06.10 |
13. 유니티 안드로이드 프로젝트 빌드하기(1) (0) | 2023.06.10 |