반응형
코드 작성
using UnityEngine;
public class VirtualJoystick : MonoBehaviour
{
public float joystickRadius = 50f; // 조이스틱의 반지름
private RectTransform joystickBackground; // 조이스틱 배경 이미지의 RectTransform
private RectTransform joystickHandle; // 조이스틱 핸들 이미지의 RectTransform
private Vector2 joystickInput = Vector2.zero; // 정규화된 조이스틱 입력값
private void Start()
{
// 조이스틱 배경과 핸들을 찾아서 할당
joystickBackground = transform.Find("Background").GetComponent<RectTransform>();
joystickHandle = transform.Find("Handle").GetComponent<RectTransform>();
}
private void Update()
{
// 사용자 입력 감지
UpdateJoystickInput();
// 조이스틱 핸들 이동
MoveJoystickHandle();
}
private void UpdateJoystickInput()
{
// 마우스 혹은 터치 입력 감지
if (Input.GetMouseButton(0))
{
// 마우스 입력일 경우
Vector2 mousePosition = Input.mousePosition;
joystickInput = (mousePosition - joystickBackground.position) / joystickRadius;
}
else if (Input.touchCount > 0)
{
// 터치 입력일 경우
Vector2 touchPosition = Input.GetTouch(0).position;
joystickInput = (touchPosition - joystickBackground.position) / joystickRadius;
}
else
{
// 입력이 없을 경우 조이스틱 입력 초기화
joystickInput = Vector2.zero;
}
// 입력값을 정규화하여 최대 길이를 1로 유지
joystickInput = Vector2.ClampMagnitude(joystickInput, 1f);
}
private void MoveJoystickHandle()
{
// 조이스틱 핸들 위치 업데이트
joystickHandle.anchoredPosition = joystickInput * joystickRadius;
// 조이스틱 핸들의 위치를 조이스틱 배경 내에서 유지
float handleDistance = joystickInput.magnitude * joystickRadius;
if (handleDistance > joystickRadius)
{
joystickHandle.anchoredPosition = joystickInput.normalized * joystickRadius;
}
}
// 외부에서 조이스틱 입력값을 받을 수 있는 함수
public Vector2 GetJoystickInput()
{
return joystickInput;
}
}
반응형
'개발 > C#' 카테고리의 다른 글
유니티 C# 방치형 돈 자동생산 코드 작성하기 간단 구현 (0) | 2024.03.14 |
---|---|
유니티 C# 간단한 디펜스 게임 만들기 Defense (0) | 2024.03.14 |
유니티 C# 서버 없이 인앱 업데이트 간단 구현 Play Update (0) | 2024.03.14 |
유니티 C# 터치 스와이프 드래그 상하좌우 Swipe Drag 코드 작성 간단 구현 (0) | 2024.03.10 |
유니티 C# 2d 넉백 효과 간단 구현 Collider knock back (0) | 2024.03.09 |
유니티 C# UI 파티클이 스크롤뷰 밖에서 렌더링 안 되도록 하는 방법 (0) | 2024.03.06 |
유니티 C# 쿠폰 시스템 만들기 간단 구현 Coupon (0) | 2024.02.29 |
유니티 C# 업적 시스템 만들기 간단 구현 (0) | 2024.02.29 |
댓글