1. 조이스틱 스크립트 예시1
1.using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.EventSystems;
public class Joy_Stick : MonoBehaviour
{
// 공개
public Vector3 moveDirection;
public Transform Stick; // 조이스틱.
public float Speed;
// 비공개
private Vector3 StickFirstPos; // 조이스틱의 처음 위치.
public Vector3 JoyVec; // 조이스틱의 벡터(방향)
private float Radius; // 조이스틱 배경의 반 지름.
public bool MoveFlag; // 플레이어 움직임 스위치.
private void Awake()
{
}
void Start()
{
Radius = GetComponent<RectTransform>().sizeDelta.y * 0.5f;
StickFirstPos = Stick.transform.position;
// 캔버스 크기에대한 반지름 조절.
float Can = transform.parent.GetComponent<RectTransform>().localScale.x;
Radius *= Can;
MoveFlag = false;
}
void Update()
{
}
// 드래그
public void Drag(BaseEventData _Data)
{
MoveFlag = true;
PointerEventData Data = _Data as PointerEventData;
Vector3 Pos = Data.position;
// 조이스틱을 이동시킬 방향을 구함.(오른쪽,왼쪽,위,아래)
JoyVec = (Pos - StickFirstPos).normalized;
// 조이스틱의 처음 위치와 현재 내가 터치하고있는 위치의 거리를 구한다.
float Dis = Vector3.Distance(Pos, StickFirstPos);
// 거리가 반지름보다 작으면 조이스틱을 현재 터치하고 있는 곳으로 이동.
if (Dis < Radius)
Stick.position = StickFirstPos + JoyVec * Dis;
// 거리가 반지름보다 커지면 조이스틱을 반지름의 크기만큼만 이동.
else
Stick.position = StickFirstPos + JoyVec * Radius;
//Player.transform.eulerAngles = new Vector3(0, Mathf.Atan2(JoyVec.x, JoyVec.y) * Mathf.Rad2Deg, 0);
//Player.transform.eulerAngles = new Vector3(0, 90 , 0);
//if (Mathf.Atan2(JoyVec.x, JoyVec.y) * Mathf.Rad2Deg>45&& Mathf.Atan2(JoyVec.x, JoyVec.y) * Mathf.Rad2Deg < 135)
//{
//}
//if (Mathf.Atan2(JoyVec.x, JoyVec.y) * Mathf.Rad2Deg > -90 && Mathf.Atan2(JoyVec.x, JoyVec.y) * Mathf.Rad2Deg < 45)
//{
// Player.transform.eulerAngles = new Vector3(0, 45, 0);
//}
//if (Mathf.Atan2(JoyVec.x, JoyVec.y) * Mathf.Rad2Deg < -90 && Mathf.Atan2(JoyVec.x, JoyVec.y) * Mathf.Rad2Deg > 120)
//{
// Player.transform.eulerAngles = new Vector3(0, 135, 0);
//}
}
// 드래그 끝.
public void DragEnd()
{
Stick.position = StickFirstPos; // 스틱을 원래의 위치로.
JoyVec = Vector3.zero; // 방향을 0으로.
MoveFlag = false;
}
}
'게임 개발' 카테고리의 다른 글
길찾기 알고리즘 A* Algorithm 에이스타 알고리즘 (0) | 2022.01.21 |
---|---|
초보 게임 개발자가 직접 만든 게임! (0) | 2022.01.21 |
유니티 FSM(유한상태머신) 이란???? (1) | 2022.01.20 |
유니티 리지드바디(Rigidbody)를 이용한 점프 구현 (3) | 2022.01.19 |
유니티 리지드바디(Rigidbody)를 이용한 점프 구현 (0) | 2022.01.19 |
댓글