디시인사이드 갤러리

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

갤러리 본문 영역

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

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


오랜만입미다.

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


- 인풋 시스템


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

특히 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
본문 보기
자동등록방지

하단 갤러리 리스트 영역

왼쪽 컨텐츠 영역

갤러리 리스트 영역

갤러리 리스트
번호 말머리 제목 글쓴이 작성일 조회 추천
- 설문 끝까지 다 본 걸 후회하게 만든 용두사미 드라마는? 운영자 25/07/07 - -
- AD 게임도 체력전! 보양식 먹고 힘내자~ 운영자 25/07/11 - -
185469 공지 신문고 [15] 파베르갤로그로 이동합니다. 25.05.24 702 0
174286 공지 인디 게임 개발 갤러리 규칙 - 질문 전 필독!! 파베르갤로그로 이동합니다. 24.12.04 4108 4
163344 공지 유료 강의 언급 차단에 관한 글 [12] 김메가갤로그로 이동합니다. 24.06.28 4646 20
52873 공지 게임제작 초심자를 위한 글 모음 [12] Goranic갤로그로 이동합니다. 20.07.02 87129 60
123789 공지 뉴비 개임개발 하려는데 뭐부터 해야하나요 복사본 [20] 흉황갤로그로 이동합니다. 23.04.11 27422 47
188879 📚정보 [사쿠라이 개발 강의 요약] 충돌 판정 지형의 강조 오카리갤로그로 이동합니다. 23:14 11 0
188878 📚정보 [사쿠라이 개발 강의 요약] 소재에 반사되는 빛 오카리갤로그로 이동합니다. 23:14 11 0
188877 🐣질문 리듬게임에 넣을 음악 허가 받는 법? [3] Indie(211.226) 22:47 62 0
188876 💬 예전에 그렸던 캐릭터 컨셉아트(?) 다시그리기 텁텁한사이다갤로그로 이동합니다. 22:45 44 0
188875 🎈행사 10분게임콘테스트 그때그게임편 ㅇㅇ갤로그로 이동합니다. 22:27 78 0
188874 🐣질문 유니티 씬 전환 원래 이리 오래걸리나.. 질문잇 [2] ㅇㅇ(14.7) 22:18 55 0
188872 💬 나이먹으니 코드에 대한 지식보다도 [5] ㅇㅇ갤로그로 이동합니다. 21:55 141 0
188871 🐣질문 유니티 Cursor 왜 작동안하지 [1] Indie(211.179) 21:42 60 0
188870 💬 30대에 게임개발 입문한 사람 있냐 [6] Indie(61.85) 21:24 176 0
188869 📜일지 모찌모찌 개발일지5 [4] 비아또갤로그로 이동합니다. 21:17 106 4
188868 💬 40대에 인디게임 개발 쉽지 않은 이유 [5] 봄네코갤로그로 이동합니다. 21:07 251 3
188867 🐣질문 유니티 버전니티 버전 비율이 보통 어떻게 되나요? [9] Indie(175.205) 21:06 75 0
188866 💬 강의 보면서 따라하는 거 중요하냐? [6] ㅇㅇ갤로그로 이동합니다. 21:01 92 0
188865 🐣질문 유니티6 쓰시는분들 input시스템 뭘로쓰시나여 [8] 꼬리흔들거리기갤로그로 이동합니다. 20:07 150 0
188864 🐣질문 BIC 주말에 대기줄 어떰? longZam갤로그로 이동합니다. 20:06 73 0
188863 💬 PICO-8 쓰는 사람 있냐 ㅇㅇ갤로그로 이동합니다. 19:55 55 0
188862 🐣질문 아니 천장이 너무 높네... 뭘로 채우지 [14] 211214갤로그로 이동합니다. 19:40 275 3
188861 🐣질문 혹시 언리얼 에셋 번들같은거 파는 사이트 알려줄수 있음? 험블번들같은 [4] Indie(49.142) 19:35 94 0
188860 💬 여기 영포티도 많은가?? [18] ㅇㅇ갤로그로 이동합니다. 19:15 350 0
188859 📜일지 [GGG] 전역하고 피자타워 스타일 게임 만들었다 [9] 꼴전사갤로그로 이동합니다. 18:54 392 20
188857 💬 gpt 진심 피드백 정확하게 나오는 사람 부럽다 [4] 오카리갤로그로 이동합니다. 18:32 159 0
188856 🐣질문 모든 행동에 static event 등록시키는거 좋은지? [5] ㅇㅇ(58.233) 18:16 138 0
188854 📜일지 [런앤건 게임을 만들어보자!] 보스 구현, 배치 [2] 해적왕지망생I갤로그로 이동합니다. 18:06 122 3
188853 💬 이거 맞음? [6] 127A갤로그로 이동합니다. 17:58 174 0
188852 💬 실베 질문 gpt한테 해봄 [2] ㅇㅇ갤로그로 이동합니다. 17:36 191 0
188851 💬 게임 망한듯 [1] ㅇㅇ(58.233) 17:31 186 0
188850 💬 호랭이 똥겜 공략 [8] 비월갤로그로 이동합니다. 17:15 234 2
188849 💬 부가가치세 신고를 도대체 워떻게 해야함?? [2] Indie(220.78) 17:13 128 0
188848 📚정보 팝타이거게임 랭크타이거게임 랭크 1위 한마디하겠다. [3] GangMin갤로그로 이동합니다. 16:49 218 0
188847 💬 유니티 기본 애니 컨트롤러 UI가 너무 지저분하지 않음?? [11] 도태준갤로그로 이동합니다. 16:43 173 0
188846 💬 부채도 재산이다 [1] ㅇㅇ갤로그로 이동합니다. 16:41 126 2
188845 📢홍보 [리듬 디펜스]데모 타이밍 고민겸 게임 구경하구 가세요! [3] 무구갤로그로 이동합니다. 14:34 184 4
188844 💬 클로드 진짜 잘하네 [7] ㅇㅇ갤로그로 이동합니다. 14:29 296 1
188843 🐣질문 탐사 우주선 화물칸에 보통 뭐가 있죠 [34] 211214갤로그로 이동합니다. 14:27 310 0
188842 💬 유니티로 하스스톤 투기장 스타일의 카드게임 개발하려고 하는데 조언 좀 [2] Indie(112.155) 13:29 187 0
188841 💬 저런류의 모집글 맨날 있는것도 참 신기함 [6] ㅇㅇ(61.99) 12:47 417 3
188840 💬 이거뭐임? [10] Indie(183.98) 11:49 574 0
188838 💬 어젯밤에 GIGDC 제출했다 [3] 메이커즈갤로그로 이동합니다. 11:21 254 2
188837 💬 여름 감기는 개도 안걸린다는데 [10] Ray.갤로그로 이동합니다. 11:15 207 0
188836 💬 앞으로 밖에서 작업할 일 많을 거 같아서 노트북 하나 사려는데 [12] ㅇㅇ갤로그로 이동합니다. 10:04 352 0
188835 📢홍보 기간테스 엑스 마키나 체험판 후기 [10] 쐬다갤로그로 이동합니다. 09:04 649 13
188834 💬 기술부채는 에어컨이다 [3] ㅇㅇ갤로그로 이동합니다. 08:53 213 0
188833 💬 공포게임 사운드 다들 어케함? [5] Indie(122.40) 08:13 170 0
188832 💬 c++프로젝트 vs code로 개발하는 사람 있냐 [6] ㅇㅇ(1.237) 08:08 235 0
188831 💬 갤오면 뭔가 박탈감들때있음. [9] Indie(123.215) 06:36 460 2
뉴스 손담비♥이규혁, 딩크족 계획했지만 남편의 아기 욕심에 출산 결심...딩크보다 행복한 일상 디시트렌드 07.10
갤러리 내부 검색
제목+내용게시물 정렬 옵션

오른쪽 컨텐츠 영역

실시간 베스트

1/8

뉴스

디시미디어

디시이슈

1/2