묻고 답해요
141만명의 커뮤니티!! 함께 토론해봐요.
인프런 TOP Writers
-
미해결[유니티 레벨 업!] 모듈식으로 개발하는 스킬 시스템
스킬 구현 질문
잘 듣고 있습니다 강사님. 롤로 치면 그레이브즈 Q 를 구현하고 싶은데 Action을 Spawn Skill Object Action으로 하고 비슷한 파티클을 써서 해보니제 위치에서 나가는게 아니라 클릭한 기준으로 직선으로 나가더라구요 여러가지 방법을 시도 해보고 있는데 어떻게 해야할지 조언 부탁 드립니다!
-
미해결[유니티 레벨 업!] 모듈식으로 개발하는 스킬 시스템
Skill의 Custom Action 중 Action의 유니티 버그 레포트
안녕하세요 강의 잘 보고 있습니다.다름 아니라 Skill에 CustomAction의 Action 탭에서 Value값들을 바꿀려하면 유니티 버그 레포트가 나타나면서 유니티가 꺼지는 현상이 지속되고 있습니다.EX) Owner Or User를 Target으로 바꿀시 크래시...다른 Cast나 Charge, Preceding 쪽에선 문제가 발견되지 않습니다.스크립트상으론 강사님의 스크립트 그대로 가져와도 똑같은 문제가 발생하는 것 같은데 아님 혹시 제가 놓친 부분이 있나 싶어서 문의드립니다.
-
미해결[유니티 레벨 업!] 모듈식으로 개발하는 스킬 시스템
Statemachine 관련질문이 있습니다.
격투게임이나 몬스터헌터처럼 애니메이션의 특정 프레임 이후에 입력받아야 특정 애니메이션이 실행가능하게 하려하는데 이걸 어떻게 해야할까요?기존에는 애니메이션 이벤트를 이용해서 구현했었는데 어떻게 해야할까요?애니메이션 이벤트를 활용하려고 하니 오버로드된 함수들 때문에 이런 경고창이 뜨긴하는데 애니메이션 이벤트의 함수들은 오버로드된 함수들이 아니라 괜찮은가요?아니면 다른 좋은 방법이 있는지 알려주실수있을까요?
-
해결됨[유니티 레벨 업!] 모듈식으로 개발하는 스킬 시스템
StateMachine중에 이해가 안가는 부분이 있습니다
TryTransion함수에서if (transition.TransitionCommand != StateTransition<EntityType>.kNullCommand || !transition.IsTransferable) continue;이부분에서 나눠서 짜면if (커맨드있음) continue;if (전이불가) continue;인데 사실상 커맨드가 있으면 뒤에 전이상태는 상관이 없다고 생각을 하는데요.그런데 이제 StateMachine을 상속한 클래스에서 MakeTransition을 한것을 보면MakeTransition<ReadyState, CastingState>(SkillExecuteCommand.Use, state => Owner.IsUseCast);이런식으로 커맨드와 조건을 같이 써놓은것이 있는데, 뒤에는 작동이 안되지 않나라고 생각해서 제가 잘못해석한건지 알아보고자 질문드립니다.
-
미해결[유니티 레벨 업!] 모듈식으로 개발하는 스킬 시스템
스킬제작 질문입니다
리그오브레전드로 예시를 많이 드셨는데 바루스 Q나 비에고W같은 스킬은 어떻게 제작할 수 있을까요.간단한 힌트를 부탁드립니다..
-
미해결[유니티 레벨 업!] 모듈식으로 개발하는 스킬 시스템
DrawFoldoutTitle에 질문이 있습니다.
CustomEditorUtility에 있는public static bool DrawFoldoutTitle(string title, bool isExpanded, float space = 15f)와 public static bool DrawFoldoutTitle(IDictionary<string, bool> isFoldoutExpandedesByTitle, string title, float space = 15f)이 각각 있는데 첫번째 DrawFoldoutTitle에서 space 값을 변경해도 두번째의 DrawFoldoutTitle에있는isFoldoutExpandedesByTitle[title] = DrawFoldoutTitle(title, isFoldoutExpandedesByTitle[title], space);여기 때문에 변경이 안되는거고 타이틀이 여러개 있을경우를 대비해서 여러개 각각의 간격을 위한건가요
-
해결됨[유니티 레벨 업!] 모듈식으로 개발하는 스킬 시스템
deadstate 질문입니다
deadstate에서 에니메이션이 다 재생된후 destroy를 할려면 어떻게 해야할까요따로 함수를 만들어 애니메이션 트리거로 destroy를 하고 있는데 더 나은 방법이 있을까 해서 질문해봅니다
-
미해결[유니티 레벨 업!] 모듈식으로 개발하는 스킬 시스템
현업에서 OdinInpector도 자주 쓰이나요??
OdinInspector를 구매해 둔 김에 사용해보고 싶어서 강의를 따라가며 Editor코딩 부분을 Odin으로 해볼까 싶은데요일단 기본적인 Editor코딩 경험 vs OdinInspector사용 경험둘 중에 어떤 것을 더 추천하시나요??
-
해결됨[유니티 레벨 업!] 모듈식으로 개발하는 스킬 시스템
이런 스킬시스템을 저장하는 방법
강의 모두 잘들었습니다. 공부한 내용을 바탕으로 스킬시스템을 넣은 게임을 만드려고 합니다. 추가로 파이어베이스의 리얼타임 데이터베이스까지 사용해서 세이브/로드 기능도 구현하려고 하는데, 이때 Json으로 저장하는 부분에서 어려움을 느끼고 있습니다. 우선 제가 알고있는 수준은 string json = JsonUtility.ToJson(player); 같이 ToJson으로 변환해서 저장하는 정도입니다. 다만 이 방법으로는 int,string,float 같은 기본 자료형만 저장이 가능한데, 이때 Entity가 들고있는 저장해야하는 데이터들. 여기서는 SkillSystem과 Stats도 저장에 포함되어야겠죠 스탯과 스킬이니깐. 이런 것들은 어떤식으로 저장을 구현하는지 마땅히 떠오르지 않습니다..멀티 게임은 아니고 싱글게임에 서버만 입혀주는 정도기 때문에 Player(강의의 Entity)의 다양한 데이터를 저장하는 방법을 알아야 하는데, 이 강의에서 나오는 현재 플레이어가 보유한 스탯,스킬의 정보는 어떤식으로 저장을 해야하나요? 최대한 쉽게.. 알려주시면 정말 너무 감사하겠습니다 ㅠㅠ 어려워요..
-
미해결[유니티 레벨 업!] 모듈식으로 개발하는 스킬 시스템
유니티 2023.1을 쓰는 이유가 따로 있는지 궁금합니다.
최신 버전이라서 쓰는 건가요? 아니면 최신 버전에서 지원하는 기능이 있는 걸까요?강의를 이제 듣기 시작해서 한 번 여쭤봅니다!
-
미해결[유니티 레벨 업!] 모듈식으로 개발하는 스킬 시스템
데이터베이스 생성 Resources 폴더를 써도 될까요?
현재 강의를 듣고나서 이를 바탕으로 저만의 시스템을 만들어보려고 합니다.강의 스킬시스템윈도우 영상에서 AssetDatabase.CreateFolder("Assets/Resources", "Database");와 같이 Resources 폴더를 생성하고 그 안에 SO를 차곡차곡 넣어주는데, 제가 어드레서블을 사용할 예정이라 Resources 폴더를 만들지 않고 필요한 리소스들을 어드레서블을 통해 관리할려고 했습니다.그런데, 이 강의에서 보면 리소스폴더에 SO 파일만 넣어주니깐 용량이 거의 있지도 않은 수준이던데 이렇게 강의처럼 에디터에서 생성한 SO만 들어간다면 리소스폴더를 사용해도 무방할까요? 혹은 애초에 굳이 리소스 폴더가 필요한지도 궁금합니다. 강의에선 특별히 Resources.Load 함수를 사용하지 않더라구요.
-
해결됨[유니티 레벨 업!] 모듈식으로 개발하는 스킬 시스템
막힌 부분이 있어 질문드립니다
인디케이터가 원뿔형으로 하였을 때 중앙이 마우스 커서를 향하게 회전하게 할려면 어떻게 해야 하나요??private void RotateTowardsMouse(){Vector3 mousePosition = Camera.main.ScreenToWorldPoint(Input.mousePosition);mousePosition.z = 0;Vector3 direction = mousePosition - transform.position;float angle = Mathf.Atan2(direction.y, direction.x) * Mathf.Rad2Deg;transform.rotation = Quaternion.Euler(new Vector3(0, 0, angle));}2d 환경에서 인디케이터 코드에 이 코드를 추가하여 update에서 실시간으로 회전하게 만들었는데문제가 90도 일때는 45도 지점이 마우스 커서 방향을 향하게 되는데180도는 0도 지점270도일때는 135지점에 마우스커서가 향하게 할려했는데 315도 지점에 마우스커서가 향하게 됩니다실제로 탐색하는 부분인 searchArea 코드에서는ector2 requesterPosition = requesterObject.transform.position;Vector2 searchDirection = requesterObject.transform.forward;if (isRotateWithMouse){Vector2 mouseWorldPosition = Camera.main.ScreenToWorldPoint(Input.mousePosition);searchDirection = (mouseWorldPosition - requesterPosition).normalized;}// 중략//if (Vector2.Angle(searchDirection, direction) < (angle * 0.5f))targets.Add(entity.gameObject);이렇게 수정하였는데 이쪽은 원하는 범위를 제대로 탐색합니다요약하자면은 실제 탐색범위는 원하는 범위를 탐색을 하는데인디케이터의 범위가 실제 탐색범위와 일치하지 않습니다.제가 실력이 아직 부족하여 문제점을 제대로 해결하지 못해 질문드립니다.
-
해결됨제미니의 개발실무 - 지속 성장 가능한 소프트웨어를 만들어가는 방법
Business Logic!
좋은강의 정말 감사드립니다!말씀하신 비즈니스 로직이 정말 보기에도 좋고 깔끔하다고 생각되서 저도 똑같이 구현해보고 싶다고 생각하는데요외부에서 주입받도록 분리한 로직들은 어느 레이어에 위치시켜야 하는지 궁금합니다. 아직 비즈니스 로직강의만 듣고 질문을 남겨서 혹시 뒷 강의에서 이에 대한 해답이 나온다면 답변해주지 않으셔도 괜찮습니다!감사합니다!
-
해결됨[유니티 레벨 업!] 모듈식으로 개발하는 스킬 시스템
적 스킬 관련 질문
진행중인 프로젝트에 강의의 시스템을 수정하며 이용하고 있는 중에 고민거리가 생겨 질문 드립니다. 기존 Projectile에서 Setup해줄 때 Skill 정보를 받아와서 명중시 해당 Skill의 Effect를 작동시켜 데미지 이펙트를 통해 데미지를 주는 방식이잖아요? 근데 원거리 적의 공격을 구현하는 중에 적의 공격도 스킬 방식으로 처리하는 것이 맞을까에 대한 고민이 생겼습니다. 기존 투사체 코드를 이용하려면 스킬을 만들어서 처리하는 것이 맞는데, 적 하나하나마다 스킬을 다 만들어주면 관리하기가 너무 힘들 것 같다는 생각이 들어서 현재는 일단 EnemyProjectile 코드를 따로 파서 카테고리가 다른 엔티티에 명중하면 적(공격자)의 AttackDamage 스탯만큼 데미지를 주는 방식으로 임시로 구현을 해두었습니다. 물론 데미지 이펙트 이외에도 CC기와 같은 다양한 이펙트를 주고 싶으면 기존 스킬 방식으로 처리하는 것이 나아보이긴 하는데요, 이런 경우 강사님은 어떤 식으로 구현하고 계신지 궁금해서 여쭤보고 싶습니다.
-
미해결[유니티 레벨 업!] 모듈식으로 개발하는 스킬 시스템
InvalidOperationException 에러에 대해 궁금한점
영상을 보고 난 후 이런 툴을 제 프로젝트에 적용시켜 혼자 만들어 보고 있었는데이렇게 사용시에 foreach 문에서 InvalidOperationException이 발생 하였습니다. (foreach를 도는 중에는 원소 값을 건드리면 안되어 발생하는 에러)영상 23분에 보면은 x버튼을 눌렀을 때 database에서 원소 값을 remove 시키는데 이 부분에선 발생하지 않던데 이건 무슨 차이 때문에 발생하지 않는건가요?
-
미해결[유니티 레벨 업!] 모듈식으로 개발하는 스킬 시스템
StateMachine 가독성
코드 상에서 일일이 Transition을 만들고 하다 보니 가독성이 딸리는 느낌이더라구요 그래서 그런데 혹시 강의 뒤에 StateMachine의 가독성을 높이기 위한 방법이 나오나요?
-
미해결[유니티 레벨 업!] 모듈식으로 개발하는 스킬 시스템
Entity 질문 있습니다.
private Transform GetTransformSocket(Transform root, string socketName) { if (root.name == socketName) return root; foreach(Transform child in root) { var socket = GetTransformSocket(child, socketName); if (socket) return socket; } return null; } 재귀에서 child를 계속 찾는다는게 이해가 가지 않습니다.child는 그냥 변수명 아닌가요?ㅠ
-
미해결[유니티 레벨 업!] 모듈식으로 개발하는 스킬 시스템
Subclass Selector Odin inspector 사용 관련
안녕하세요 저는 현재 Odin inspector를 에셋스토어에서 구매하여 쓰고 있습니다. 강의에서 subclassSelector를 odin 내장 기능으로 쓸 수 있다고 하셨는데 어떤 네임스페이스를 써야 사용이 가능한지 여쭤봐도 될까요? 번역기 돌려가며 열심히 찾아보고 매뉴얼 봐도 모르겠네요 ㅠㅠ
-
미해결[유니티 레벨 업!] 모듈식으로 개발하는 스킬 시스템
Category[] 직렬화
[SerializeField] 를 통해 IdentifiedObject에서 Category를 직렬화해주고 있는데요.직렬화를 위해서는 다시 Category의 부모인 IdentifiedObject의 직렬화 가능한 멤버변수를 알아야 하는데 그렇다면이론상 재귀 호출이 무한히 일어날 것 같은데 잘 작동이 되는 이유가 궁금합니다.
-
해결됨[유니티 레벨 업!] 모듈식으로 개발하는 스킬 시스템
Time Sync 문제 관련 질문
Time Sync 문제로 인해 currentApplyCycle를 0으로 초기화 할 것이 아니라 오차 값(영상에서는 0.0012)으로 초기화 해야 된다는 설명 잘 들었습니다! 여기서, currentApplyCycle %= ApplyCycle; 로 초기화를 하는 부분에서, currentApplyCycle 변수의 경우, public float CurrentApplyCycle{ get => currentApplyCycle; set => currentApplyCycle = Mathf.Clamp(value, 0f, ApplyCycle);}위 코드의 Mathf.Clamp 함수로 인해 값이 0 ~ ApplyCycle(0.5) 사이에 머물게 되는데 이러면 0.5012 값이 0.5로 조정되어서 결국에는 0.5 % 0.5가 되어 0이라는 값으로 초기화 되는 게 아닌가 하여 질문합니다!