유튜버 "골드메탈"님의 영상을 참고하여 모바일 게임용 조작키를 추가하였고
조작키에 대한 코드를 보완하였다.
https://www.youtube.com/watch?v=IJxc-ANxO-w&t=1204s
모바일용 컨트롤러를 추가한 후 해당 컨트롤러용 조작 코드를 작성하였다.
기존의 키보드를 통한 조작도 가능하도록 되어 있다.
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class SnakeMove : MonoBehaviour
{
// Snake Movement Var
Vector2 dir = 1 * Vector2.right;
private float size = 1;
// Snake Direction Var
float h; // Horizontal
float v; // Vertical
bool isHorizonMove;
// Mobile Key Var
int up_Value;
int down_Value;
int left_Value;
int right_Value;
bool up_Down;
bool down_Down;
bool left_Down;
bool right_Down;
bool up_Up;
bool down_Up;
bool left_Up;
bool right_Up;
void Start()
{
InvokeRepeating("Move", 0.3f, 0.3f);
}
void Update()
{
// Move Value (PC + Mobile)
h = Input.GetAxisRaw("Horizontal") + (right_Value + left_Value);
v = Input.GetAxisRaw("Vertical") + (up_Value + down_Value);
// Check Button Down & Up (PC || Mobile)
bool hDown = Input.GetButtonDown("Horizontal") || right_Down || left_Down;
bool vDown = Input.GetButtonDown("Vertical") || up_Down || down_Down;
bool hUp = Input.GetButtonUp("Horizontal") || right_Up || left_Up;
bool vUp = Input.GetButtonUp("Vertical") || up_Up || down_Up;
// Check Horizontal Move
if (hDown)
isHorizonMove = true;
else if (vDown)
isHorizonMove = false;
else if (hUp || vUp)
isHorizonMove = (h != 0);
// Determine Direction
if (h != 0 || v != 0)
dir = (isHorizonMove ? new Vector2(h, 0) : new Vector2(0, v));
// Mobile Var Init
up_Down = false;
down_Down = false;
left_Down = false;
right_Down = false;
up_Up = false;
down_Up = false;
left_Up = false;
right_Up = false;
}
void Move()
{
transform.Translate(size * dir);
}
// Button Down (Mobile)
public void ButtonDown(string type)
{
switch (type)
{
case "U":
up_Value = 1;
up_Down = true;
break;
case "D":
down_Value = -1;
down_Down = true;
break;
case "L":
left_Value = -1;
left_Down = true;
break;
case "R":
right_Value = 1;
right_Down = true;
break;
}
}
// Button Up (Mobile)
public void ButtonUp(string type)
{
switch (type)
{
case "U":
up_Value = 0;
up_Up = true;
break;
case "D":
down_Value = 0;
down_Up = true;
break;
case "L":
left_Value = 0;
left_Up = true;
break;
case "R":
right_Value = 0;
right_Up = true;
break;
}
}
}
궁금하신 점은 밑에 댓글 바랍니다
'메모장 > 스네이크 게임' 카테고리의 다른 글
스네이크 게임 - 메인 메뉴와 일시 정지 (0) | 2021.01.18 |
---|---|
스네이크 게임 - 점수 카운트 (0) | 2021.01.17 |
스네이크 게임 - 스네이크 길이 증가 (0) | 2021.01.16 |
스네이크 게임 - 음식 랜덤 생성 (2) | 2021.01.15 |
스네이크 게임 - 조작키 코드 (0) | 2021.01.14 |