디시인사이드 갤러리

마이너 갤러리 이슈박스, 최근방문 갤러리

갤러리 본문 영역

[📜일지] RTD 개발일지 7 - 인풋시스템, 게임패드 제어와 데모 (33.1MB)

카퍠인갤로그로 이동합니다. 2023.07.20 15:48:33
조회 279 추천 6 댓글 6
														


오랜만입미다.

하루죙일 버그도 고치고 새로운 소식들을 가져와봤어요


- 인풋 시스템


인풋시스템이 참 좋은데 입문하기가 조금 어려운 감이 있더라고요

특히 GetButtonDown이나 입력값을 받아오는건 계속 시행착오를 했어요


참고자료 :

https://youtu.be/Pzd8NhcRzVo

 


일단 영상을보고 스크립트로 제어해보려고 따라했고

7c82f928f5c72c852df1c6bb11f11a39665badbe43563348


대충 이런식으로 제어를 해보니까 나름 잘 굴러가더라고요

7982f928f5c72c956daddfa5029f34335a7b0df587db9f581ad8b083

이해하기는 그래도 힘들어서 며칠동안 머리 박은듯...


1. 패드지원


버그들을 고치면서 인풋시스템을 새로 넣어봤어요, 복잡하지만 쓸만하더라고요

하는김에 패드도 지원하게끔 만들었는데 집에 있는 건 듀얼쇼크 뿐이라 다 잘 작동하면 좋겠네요..


7d82e027e1f93dbf7df1c6bb11f11a39ab19edd9ef017b2441


조작키를 정리해보니 참 많더라고요...

게임을 해보면서, 다른 게임들 조작법도 참고해보면서 짜놨는데 잘 적응해주셨으면 좋겠어요


2. 패드 진동


패드의 사용이유중 하나는 진동이라고 생각했어요

그래서 한번 지원해봤어요


유니티 인풋 시스템에선 패드 진동을 이런 식으로 사용하게 되더라고요

Gamepad.current.SetMotorSpeeds(0.8f, 0.4f);


이걸 수동으로 0값으로 안 끄면 모터가 평생 돌아가더라고요

그래서 패드 제어하는 스크립트를 만들어왔습니다.


using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.InputSystem;
using System.Linq;
using DG.Tweening;
public class RumbleManager : MonoBehaviour
{
public static RumbleManager instance;
private Gamepad pad;
private Coroutine stopRumbleAfterTimeCoroutine;
public Dictionary<int,Vector4> rumble_Vectors = new Dictionary<int, Vector4>();
int count = 0;
Vector3 maxVector;
private void Awake()
{
instance = this;
}
public void RumblePulse(float lowFrequency, float highFrequency, float _duration)
{
pad = Gamepad.current;
Debug.Log("Rumbling_Seq!!");
if (pad != null)
{
pad.SetMotorSpeeds(lowFrequency, highFrequency);

stopRumbleAfterTimeCoroutine = StartCoroutine(StopRumble(_duration, pad));
}
}
private void OnDestroy() {
instance = null;
}
public void RumblePulse(Vector3 _freqvec)
{
pad = Gamepad.current;
Vector4 _getvec = _freqvec;
_getvec.w = 0;
keyregen:
count++;
if (!Gamepad.ReferenceEquals(Gamepad.current,null))
{
if(!rumble_Vectors.ContainsKey(count))
{
rumble_Vectors.Add(count, _freqvec);
}
else
{
goto keyregen;
}
}
}
public void RumbleLerp(Vector3 _freqvec)
{
pad = Gamepad.current;
Vector4 _getvec = _freqvec;
_getvec.w = 1;
if (!Gamepad.ReferenceEquals(Gamepad.current,null))
{
keyregen:
var _key = count++;
//Debug.Log("Get Key : " + count);
if (!rumble_Vectors.ContainsKey(_key))
{
rumble_Vectors.Add(_key, _freqvec);
DOTween.To(() => rumble_Vectors[_key], x => rumble_Vectors[_key] = x, new Vector4(0, 0, 0, 1), rumble_Vectors[_key].z * 0.5f).SetEase(Ease.Linear).SetDelay(rumble_Vectors[_key].z * 0.5f);
}
else
{
goto keyregen;
}
}
}
private void Update()
{
if (!Gamepad.ReferenceEquals(pad,null))
{
maxVector = Vector3.zero;
if (rumble_Vectors.Count > 0 && Time.timeScale > 0)
{
for (int i = 0; i < rumble_Vectors.Count; i++)
{
var _dicvec_key = rumble_Vectors.ToList()[i].Key;
var _dicvec = rumble_Vectors[_dicvec_key];
if (_dicvec.z < 0)
{
//Debug.Log("Removed Key : " + _dicvec_key);
rumble_Vectors.Remove(_dicvec_key);
}
else
{
var _getfloat = _dicvec.x;
var _maxfloat = maxVector.x;
maxVector.x = _getfloat > _maxfloat ? _getfloat : _maxfloat;
_getfloat = _dicvec.y;
_maxfloat = maxVector.y;
maxVector.y = _getfloat > _maxfloat ? _getfloat : _maxfloat;
_getfloat = _dicvec.z;
_maxfloat = maxVector.z;
maxVector.z = _getfloat > _maxfloat ? _getfloat : _maxfloat;
_dicvec.z -= _dicvec.w == 1 ? 0 : Time.deltaTime;
rumble_Vectors[_dicvec_key] = _dicvec;
}
}
}
pad.SetMotorSpeeds(maxVector.x, maxVector.y);
}
}
private IEnumerator StopRumble(float duration, Gamepad pad)
{
float elapsedTime = 0f;
while(elapsedTime < duration)
{
elapsedTime += Time.deltaTime;
yield return null;
}

pad.SetMotorSpeeds(0f,0f);
}
}


딕셔너리에 진동값을 받아오고 update문에서 최대 진동값을 찾아서 제어해주는 럼블 매니저님이에요

코루틴으로 수동으로 제어할수도 있고요

에셋 DoTween을 사용해야 하지만 어차피 무료로 다들 사용하고 계시죠..?

구현은 쉽게 하실테지만 귀찮음을 덜어드리겠습미다.


참고자료 :

https://youtu.be/SmmBC-yCJ28

 



3. 패드 에임 어시스트


일단 패드로 조준하는 기능을 넣어봤어요


참고자료 :

https://youtu.be/Y3WNwl1ObC8

 



그리고 제 게임은 패드로 조작하기엔 어렵다고 생각했어요

조준하고 발사하고 해당 위치로 아이템까지 던지는데 어렵겠죠


7d82f62ae4c130e869b6d09528d52703a5b5776adb39749a


영상에선 virtualMouse를 캔버스 내에 생성에서 패드로 입력값을 받아와 위치를 옮겨요

그럼 그 마우스 위치를 var _vmousepos = Camera.main.ScreenToWorldPoint(vmous.position.value); 로 받아올 수 있어요

이제 그 마우스 위치부터 제 위치까지 쭉 RayCastHit2D[] _hit = Physics2D.CircleCastAll(....)을 사용하면

마우스 위치부터 원형 범위에 충돌한 대상들을 쭉 불러올 수 있어요

하지만 제 게임은 시야가 중요하니 플레이어 위치까진 불러오지 않았고 버추얼마우스 주위의 오브젝트들만 받아왔어요


포인터도 타겟에 같이 움직이게끔 했는데 순간이동하면 느낌이 거지같아서 러프를 줘서 결과물을 만들었어요


7f82f12fe8f32bb567acc2fb01d4262de09eba2616224f4e6d717278480f


7e82f12fe8f32bb567acc2fb01d4262d127b9221ddfb52af58483ec29a


이래도 패드 유저들은 난이도가 높을 것 같아서 걱정이네요...


- 슬기로운 데모생활


얘는 맨날 개추만 날리고 게임은 만들긴 하는건가? 하셨나요?

Risk The Dark | STOVE 인디 (onstove.com)



여기서 뭘 만들고 있었는지 게임을 해보실 수 있어요! (내일 정각에 칼같이 열림)

이런게임이에요




게임의 데모분량만큼 나왔다고 생각해서 신청해봤는데 붙여주셨어요.

미리 붙었다고 말하면 기다리실수도 있을 것 같아서 말 안하고 있었어요ㅋㅋ..

해보시고 게임의 의견, 피드백, 비판, 개선점 등 말해주신다면 도움이 많이 될 것 같아요!


Risk The Dark의 슬데 피드백 & 이벤트 참여 안내 (~8/18) (onstove.com)


스토브에서 기프티콘주는 이벤트도 해주시니까 관심있으시면 한번 해보실래요...?

홍보글같으면 홍보탭으로 갈게요..


읽어주셔서 감사하고 담에뵈요!

자동등록방지

추천 비추천

6

고정닉 2

0

댓글 영역

전체 댓글 0
등록순정렬 기준선택
본문 보기
자동등록방지

하단 갤러리 리스트 영역

왼쪽 컨텐츠 영역

갤러리 리스트 영역

갤러리 리스트
번호 말머리 제목 글쓴이 작성일 조회 추천
2868 설문 힘들게 성공한 만큼 절대 논란 안 만들 것 같은 스타는? 운영자 24/06/10 - -
2869 AD 딥 블루 호라이즌 사전예약 6.14-7.4 운영자 24/06/14 - -
162490 뉴스 [인디言] 조선풍 꼬리잡기 마피아게임 ‘귀귀살전’ 게임메카갤로그로 이동합니다. 24.06.16 0 0
161634 공지 취.업관련 이야기 금지 [10] 파베르Dev갤로그로 이동합니다. 24.06.05 744 7
159490 공지 인디 게임 개발 갤러리 규칙 - 질문 전 필독!! [25] 에뚜갤로그로 이동합니다. 24.05.10 1053 3
52873 공지 게임제작 초심자를 위한 글 모음 [9] Goranic갤로그로 이동합니다. 20.07.02 64918 52
123789 공지 뉴비 개임개발 하려는데 뭐부터 해야하나요 복사본 [14] 흉황갤로그로 이동합니다. 23.04.11 12705 22
162489 🐣질문 민원24에서 등본 떼려는데 [3] ㅇㅇ갤로그로 이동합니다. 18:39 73 0
162488 💬 일명 똥기사 게임, 포티 나이트 사가 ㅇㅇ(112.159) 17:35 86 0
162487 💬 바이오하자드4가 당시엔 대단한 수준이었음? [4] ㅇㅇ(59.6) 16:56 95 0
162486 💬 지금 만들고 있는 게임 로비 UI(피드백환영) [2] ㅇ,ㅇ갤로그로 이동합니다. 16:56 146 0
162485 💬 인생겜 얘기에 언더테일 << 얘기가 하나도 읎네 [3] 애기바다뱀갤로그로 이동합니다. 16:46 182 0
162483 💬 인생겜 너무 갱신되어서 꼽을수가 없음 [4] 호시타갤로그로 이동합니다. 15:39 203 0
162481 💬 노트북 + 테블릿 성능 합치는 방법 없나?? [6] Mr빙그레갤로그로 이동합니다. 15:16 151 0
162480 💬 방금 큐레이터 관련 질문글 올렸던 사람입니다..! [2] ㅇㅇ(58.120) 14:39 112 0
162478 💬 최근에 올린 MD-530 디펜더 정찰 게임 [6] 박희종갤로그로 이동합니다. 14:06 401 12
162477 💬 그리드 인벤, 아이템끼리 드래그드랍 상호작용 만들면 실력 ㅇㅈ? [5] ㅇㅇ(211.210) 13:19 185 0
162476 💬 무슨 겜을 만들어야 할까... [4] ㅇㅇ(112.159) 13:15 279 0
162475 💬 인디게임 만들고 싶음 [8] ㅇㅇ(112.171) 13:15 269 0
162474 💬 밑에 인생겜 보고 새삼 본인 딸피인거 체감됨 [2] 강화인간갤로그로 이동합니다. 12:48 261 0
162473 🐣질문 국산 무기 저작권은 빡세게 잡는편임? [5] ㅇㅇ(211.206) 12:47 240 0
162472 💬 발 들인 계기가 나는 상당히 이상함.... [3] ㅇㅇ(119.193) 12:40 241 1
162471 💬 넥페도 이제 대충 하루 남았네 강화인간갤로그로 이동합니다. 12:37 99 0
162469 💬 여기는 인디게임 많이 해본사람들이 많나봐 [13] ㅇㅇ(175.193) 12:23 378 1
162468 💬 인생겜 뭐임? [26] ㅇㅇ(115.139) 10:26 438 0
162466 💬 입문할 때 대작게임 만든답시고 제대로 출시도 안해본 거 노무 후회됨 [12] ㅇㅇ(210.100) 09:48 400 0
162465 💬 늙은 이펙터 Q&A필요한 사람 [16] ㅇㅇ갤로그로 이동합니다. 08:56 316 0
162464 💬 개발팀 SNS를 만들었읍니다 [8] dryrain갤로그로 이동합니다. 05:01 761 14
162461 📜일지 ㅇㄴㅎㄱ [9] Piggy3590갤로그로 이동합니다. 04:18 272 4
162439 🎈행사 [Summer 게임잼] 인디게임개발갤러리배 예고(재) [17] 봄네코갤로그로 이동합니다. 06.15 932 21
162456 💬 아니 개빡치네 넥페 라이브 도중에 OBS 끊겼어 [2] 강화인간갤로그로 이동합니다. 02:37 213 1
162455 💬 인디게임 개발자들 진짜 대단한게 [15] 이백만갤로그로 이동합니다. 01:43 652 1
162454 💬 사실 커뮤 안익숙한데 유동닉 만들고 싶은데 만들고 쑥쓰러워하다보면 자꾸 [3] ㅇㅇ(39.123) 01:40 156 0
162453 💬 인벤토리에서 장비아이템슬롯으로 옮기는거 어렵네 [4] ㅇㅇ(61.98) 01:37 172 0
162452 💬 광고 많은 재밌는 모바일겜 보면 [2] 이백만갤로그로 이동합니다. 01:23 188 2
162451 💬 개인적인 생각인데 여캐만 있는 전투겜은 오히려 ㅇㅇ갤로그로 이동합니다. 01:21 162 0
162450 💬 게임 낸 사람들 상표권 등록같은거 어케했음? [4] ㅇㅇ갤로그로 이동합니다. 01:14 258 0
162449 💬 존나 간단한 질문이지만 물어봐도 될까 잘 모르겠다 [3] ㅇㅇ갤로그로 이동합니다. 01:10 217 0
162446 🐣질문 유니티 좌표가 좀 이해가 안됨 [8] ㅇㅇ(218.150) 00:53 259 0
162445 💬 유니티 이거 1인칭 테스트인데 [14] ㅇㅇ(49.170) 00:46 241 0
162444 💬 잘난 기획은 걍 뭐든 해보려고 함 [5] ㅇㅇ갤로그로 이동합니다. 00:44 217 4
162443 💬 뉴비인데 싱글톤 패턴 << 이거 배웠는데 신세계를 경험 [6] ㅇㅇ(114.202) 00:09 231 0
162442 💬 (진지) 인디게임 프로그래머에 재능이 있다고 생각해? [17] ㅇㅇ(61.77) 06.15 386 0
162441 💬 아트팀 일하기전에 알파버전 먼저 만들어와야되는거 맞지? [14] ㅇㅇ갤로그로 이동합니다. 06.15 260 0
162440 💬 덱빌딩 겜인데 내 덱을 상대도 쓰는 겜 본적있니? [13] ㅐㅐㅋㄷ갤로그로 이동합니다. 06.15 243 0
162438 💬 릴레이 게임잼 재밌지 않을까 [7] ㅇㅇ(219.255) 06.15 201 3
162437 📢홍보 개발 중인 리듬게임 첫 홍보영상 올려봅니다. (Ariom) [11] earystudio갤로그로 이동합니다. 06.15 487 9
162436 💬 놀랍게도 결론은 기획자는 소규모 인디 프로젝트에 필요하다는 것입니다. [14] 검은고양0I갤로그로 이동합니다. 06.15 548 0
162435 💬 번역게이 없으면 떡밥이 [6] ㅇㅇ(118.35) 06.15 514 11
162432 💬 스팀 RTMP 서버 원래 이렇게 지랄이 심한가 강화인간갤로그로 이동합니다. 06.15 69 0
162431 🐣질문 형들 이게임 어떤건지 아시나요? [1] ㅇㅇ(59.13) 06.15 256 0
162429 🐣질문 캐주얼한 것보단 쫌 하드코어한 게 낫나? [5] ㅇㅇ(119.193) 06.15 205 0
162428 💬 골라죠오오 [15] 문캐슬갤로그로 이동합니다. 06.15 319 0
162427 🐣질문 TrailRenderer 질문 ㅇㅇ(211.118) 06.15 82 0
162426 💬 철저한 취미라면 어떤 엔진을? [16] ㅇㅇ(121.169) 06.15 349 1
162425 💬 혹시 갤에 운빨존많겜 관계자 있냐? [2] ㅇㅇ(180.67) 06.15 459 0
162424 💬 부업으로 인디겜 개발한다 질문 받는다. [14] ㅇㅇ(183.96) 06.15 457 0
갤러리 내부 검색
제목+내용게시물 정렬 옵션

오른쪽 컨텐츠 영역

실시간 베스트

1/8

뉴스

디시미디어

디시이슈

1/2