묻고 답해요
161만명의 커뮤니티!! 함께 토론해봐요.
인프런 TOP Writers
-
미해결[C#과 유니티로 만드는 MMORPG 게임 개발 시리즈] Part4: 게임 서버
interlocked 강의
race condition 문제에서 예시에서10만번 반복했을 땐 문제가 생기지만 만번 반복했을땐 0 이 나오는 이유는 뭘까요 ?
-
해결됨[Unity6] 나만의 서바이벌 게임 만들기
character movement 반응속도
move에 대한 animator 작업도 진행하고 코드작업도 진행을 했는데요.처음 게임 시작누르고 방향키를 한 2~3초눌러야 run상태로 가더라고요. idle상태는 그거보단 빠른 1초정도?어떤게 문제일까요..condition에서 스피드에 대한 값도 지정해서 0.1 0.01까지 낮춰보았고, setting에서 exit time과 transition duration까지 낮춰보면서 해봤는데 안되네요.음 좀 보는데 idle에서 모션변환까지 duration이 좀 걸리는거같은데요..void Move() { // key 방향 float horizontal = Input.GetAxis("Horizontal"); float vertical = Input.GetAxis("Vertical"); Vector3 cameraForward = Camera.main.transform.forward; Vector3 cameraRight = Camera.main.transform.right; cameraForward.y = 0.0f; cameraRight.y = 0.0f; cameraForward.Normalize(); cameraRight.Normalize(); Vector3 moveDirection = cameraRight * horizontal + cameraForward * vertical; // mobile, pc 속도 차이 줄이기위해 controller.Move(moveDirection * moveSpeed * Time.deltaTime); // moveDirection.magnitude를 좀 더 빠르게 반영하도록 float currentSpeed = moveDirection.magnitude * moveSpeed; animator.SetFloat("a_Speed", currentSpeed); }
-
미해결[C#과 유니티로 만드는 MMORPG 게임 개발 시리즈] Part3: 유니티 엔진
몬스터와 캐릭터가 닿았을때 밀리는 현상
안녕하세요 선생님 강좌 너무 잘 듣고 있습니다.다름이 아니라 13:40초에 캐릭터와 몬스터가 서로 충돌해서 밀리는 현상을 설명 해주신대로 NavMeshAgent 를 삭제하고 일반적인 이동 방식으로 수정해서 잘 사용하고 있습니다.근데 혹시 NavMeshAgent 를 나는 꼭 써서 해야돼 라고 생각 하시는 분들은 구글을 찾아 봤는데NavMeshAgent nma = gameObject.GetOrAddComponent<NavMeshAgent>();// nma 로 NavMeshAgent 를 불러와서nma.obstacleAvoidanceType = ObstacleAvoidanceType.NoObstacleAvoidance;// obstacleAvoidanceType 을 NoObstacleAvoiddance로 교체를 해주면 네브메쉬를 가지고 있어도 서로 충돌하지는 않는거 같습니다. 혹시 저처럼 궁금한 분들이 있을까봐 남깁니다.선생님 날씨가 추운데 감기 조심하시고 강의 더 집중해서 듣겠습니다.
-
해결됨유니티 시스템 프로그래밍 Pt.1 - 상용 게임 구현을 위한 핵심 시스템 올인원 패키지
[Title씬 구성 관련 질문 : 프리팹]
Title 씬 프리팹 관련 질문이 있습니다. Q1. 타이틀 프리팹에 별도의 UI만 보여주는 카메라를 만든 이유가 무엇인가요? (main 카메라가 아닌 별도의 카메라를 만들고 또 그것을 프리팹에 넣은 이유) Q2. Title의 경우 프리팹에 캔버스까지 있습니다. 궁금한 것은 InGame에서 각각 UI들도 프리팹으로 만들텐데, 다 이렇게 개별 UI 프리팹마다 캔버스를 만드는 것이 좋은가요? (프리팹 안에 캔버스를 넣는 이유와, 주의해야 할 사항)* ) 제가 예전에 작업을 할 때, 큰 UI 캔버스 만들고 하위로 캔버스를 가진 UI프리팹들을 넣으니까, 가끔 프리팹 창에서 수정할 때 UI들이 화면에 보이지 않았던 경험이 있어서 질문드립니다! 좋은 강의 감사합니다 🙂 남은 강의도 잘 챙겨 보겠습니다!
-
해결됨절대강좌! 유니티 6 - TPS 게임으로 배우는 유니티 마스터클래스
IDamagable 활용
인터페이스를 활용한 피격 데미지 구현 강좌를 보면 총알의 HIT를 Collision 기반에서 Raycast 기반으로 변경하고 있습니다.Raycast를 사용하는 장점은 무엇인가요? 현업에서도 FPS/TPS를 제작할 때 Collision보다는 Raycast를 더 많이 사용하나요?
-
해결됨책 3권을 영상으로 만든 Unity 게임 개발
닉네임 텍스트에 이름 기입은
'유저 정보 나타내기' 강의 중{NickName}을 실행시키니 '김철수'가 나오는데 이건 어떻게 하신건가요??영상에는 편집되어 바로 김철수가 떠서어떻게 하는지 궁금하네요
-
해결됨이득우의 꼭 배워야하는 게임 알고리즘
쿼드트리 옥트리가 활용되는 예시에 대하여 더 여쭤보고싶습니다.
3D던전 로그라이크 게임을 개발중인 초보 개발자입니다.PCG알고리즘에 부족한 점이 있는 것 같아 수강 하였습니다. 활용된 예시로는 2D플랫포머, 탄막게임에서의 최적화 부분과 3D게임에서 LOD로 부분 렌더링하는것 까지는 이해하였는데 활용된 다른 예시들이 궁금합니다.
-
미해결[C#과 유니티로 만드는 MMORPG 게임 개발 시리즈] Part7: MMO 컨텐츠 구현 (Unity + C# 서버 연동 기초)
강의 후반부에 순서 동기화를 위해 잡큐를 사용 안 한 부분 질문입니다!
안녕하세요.GameObject.OnDead()에서 Room.Broadcast(diePacket);부터는, 로직의 순서를 동기화하기 위해 잡큐에 넣지 않고 처리하는 방법을 선택하셨습니다.다행히(?) 해당 로직이 최초 Update()에서 호출이 되고 Update()가 일감으로 들어가서 처리되다 보니까 넓은 의미에서 OnDead() 역시도 잡큐에서 처리될 거니까 문제는 없는 것 같긴 합니다.실무에서도 이런 식으로 기본적으로 잡큐 방식을 사용하지만, 순서 동기화 등 필요에 따라 하위 일감을 잡큐에 넣지 않고 바로 실행하는 방식이 유연하게 사용되는 것인지 궁금합니다~이쪽으로 실무 경험이 없다 보니까 어느 수준까지 유연하게 대처해야 하는지 감을 조금 잡고 싶습니다.감사합나다.
-
해결됨[Unity6] 유니티6로 배우는 실전 멀티플레이 디펜스
프리팹 변경할때 가상플레이어 껏다 키면 됩니다!!
10:36초에서 프리팹 변경될때 virtual gamemode에서 해당 player를 껏다 키면 다시 적용 되어서 굳이 유니티 안끄고도 잘 플레이 되더라구여 다른 분들 위해서 혹시나 해서 올려봅니다!!!
-
해결됨유니티 시스템 프로그래밍 Pt.2 - 상용 게임 구현을 위한 핵심 시스템 올인원 패키지
로컬라이즈 어셋 각 언어별 폰트적용
안녕하세요. Part1부터 수강중인 학생입니다!수업 잘 듣고 있습니다.로컬라이즈 어셋을 활용한 다국어 지원 시스템에서 각 언어마다 font를 다르게 지정할 수 있는 방법이 있나요? 구글링과 gpt를 사용하여 검색을 해보았지만 처리하기 어려워 질문을 남깁니다!
-
해결됨유니티 시스템 프로그래밍 Pt.1 - 상용 게임 구현을 위한 핵심 시스템 올인원 패키지
CSVReader 자세하게 설명 가능하신가요?
다른 프로젝트에서 사용하고 싶은데 자세하게 설명 가능하신가요?
-
미해결[C#과 유니티로 만드는 MMORPG 게임 개발 시리즈] Part3: 유니티 엔진
Camera #3 에서 질문입니다. 카메라가 캐릭터 position으로 이동됩니다.
using UnityEngine; public class CameraController : MonoBehaviour { [SerializeField] Define.CameraMode _mode = Define.CameraMode.QuaterView; [SerializeField] Vector3 _delta = new Vector3(0f, 0f, 0f); [SerializeField] GameObject _player = null; void Start() { } void LateUpdate() { if (_mode ==Define.CameraMode.QuaterView) { RaycastHit hit; if (Physics.Raycast(_player.transform.position, _delta, out hit, _delta.magnitude, LayerMask.GetMask("Wall"))) { float dist = (hit.point - _player.transform.position).magnitude * 0.8f; transform.position = _player.transform.position + _delta.normalized * dist; } else { transform.position = _player.transform.position + _delta; transform.LookAt(_player.transform); } } } public void SetQuaterView(Vector3 delta) { _mode = Define.CameraMode.QuaterView; _delta = delta; } } 대체 어디가 잘 못 된건지 모르겠습니다 ㅠ
-
해결됨[C#과 유니티로 만드는 MMORPG 게임 개발 시리즈] Part4: 게임 서버
클라이언트쪽 Session 재사용
유니티수업에서 Networkmanger class 질문입니다. 클라이언트에서 서버와 통신 도중 통신 연결이 갑자기 해제한 된 경우(사용자가 의도하지 않은 경우 랜선이 뽑혔다거나..) Connector는 새로 생성해서 기존 Session 객체를 넘겨주면 되는건가요? 소켓은 다시 생성하고 session객체는 재사용이 되는걸까요? 이때 session객체가 이미 사용중이라는 메세지가 뜨는 것 같아서요. 서버와 통신 중 어떤 이유로 연결 해제 시 클라쪽에서 서버와 자동 재접속을 해보고 싶어 질문드립니다.
-
미해결C#과 유니티, 실전 게임으로 제대로 시작하기 (저자 직강)
Invoke 오류
코드 상으로는 오류는 뜨지 않는데 실행을 시키면 Invoke가 제대로 실행이 되지 않습니다.
-
해결됨Unity 6 Shader Graph 입문과 활용
물결 효과 파트 질문
안녕하세요? 강의 중 궁금한 점이 몇 가지 있어 질문 드립니다.Tiling And Offset에 UV 노드를 연결하셨는데 이유가 혹시 있을까요? 연결하지 않아도 똑같이 동작해서 궁금합니다.UV가 텍스처의 좌표값이라면 Tilling And Offset은 2차원 벡터인 이유는 이해가 갑니다. 근데 일반 UV 노드의 output은 4차원 벡터인 이유가 궁금합니다. Sine Time을 Sine 노드에 연결하셨는데, 이렇게 되면 sin(sin(time)) 이렇게 작동하는게 맞을까요? sin이 -1~+1 사이를 왔다갔다 한다면 sin(sin(time))의 실제 Output은 절댓값이 1에 못미치는 값으로 왔다갔다 할텐데 제 생각이 맞는지 궁금합니다.감사합니다.
-
해결됨[Unity] 함께 만들어가는 방치형 게임 개발
nova, dice, z 이펙트(프리팹)들이 깨져서 나오는데 해당 파일들을 혹시 받을 수 있을까요?
다름이 아니고 유니티 패키지를 받아오는데 z 프리팹이 깨져서 나오고 dice와 nova 프리팹이 유니티 패키지 임포트 목록에 보이질 않아서요 혹시 따로 좀 받을 수 있다면 부탁드리겠습니다.
-
미해결[C#과 유니티로 만드는 MMORPG 게임 개발 시리즈] Part4: 게임 서버
SendBuffer 질문
스레드에게 고유한 SendBuffer를 두는게 세션마다 SendBuffer를 두고 자기꺼만 담는것보단 일꾼(스레드)가 SendBuffer를 들고다니면서 세션에서 보내는걸 담는게 부하가 덜 걸리기 때문에 외부에 만드는걸로 이해해도 될까요?
-
해결됨[Unity6] 나만의 서바이벌 게임 만들기
인터렉티브 키 24:14 Destory 질문
질문1.foreach(var iconEntry in activeIcons){if (!currentObjects.Contains(iconEntry.Key)){iconEntry.Value.GetComponent<UIAnimationHandler>().AnimationChange("OUT");Destroy(iconEntry.Value);toRemove.Add(iconEntry.Key);}}이 코드에서 파괴명령이 있어서 또다른 파과명령은 안 내려도 되지 않나요? 저는 멀어지면 아이콘이 잘 파괴되서 여줘봅니다. ->해결(Destory옮긴 건을 못 봤네요. ) 질문2.foreach(Collider obj in nearbyObjects){Transform targetTransform = obj.transform;float distance = Vector3.Distance(transform.position, targetTransform.position);if(distance <= activationDistance){ShowIcon(targetTransform);currentObjects.Add(targetTransform);}}제가 이해하기에는 currentObjects목록에는 항상 실시간으로 부딪힌 collider들의 transform만 가질 수 있도록 update가 돼야 작동하는 게 맞는 것 같은데요. 추가하는 코드만 있는데 갱신이 되려면 거리를 충족시키지 못하면 이미 있는 transform들을 삭제하는 코드가 있어야 맞는 거 아닌지 의문이 들어요. -> HashSet<Transform> currentObjects = new HashSet<Transform>(); 이부분에서 계속 초기화가 된다고 생각하면 될까요?
-
해결됨[Unity6] 나만의 서바이벌 게임 만들기
move함수
안녕하세요 선생님move 함수에서 카메라 백터 로0으로 기준을 잡아서 horizontal, vertical 값을 줘서 움직이는건가요camerForward,cameraRight기준으로 코드는 처음봐서요!헷갈립니다
-
해결됨유니티 시스템 프로그래밍 Pt.2 - 상용 게임 구현을 위한 핵심 시스템 올인원 패키지
강의 : Addressables를 활용한 어셋 관리 및 로딩 처리 문의
현재 사용중인 기기 : 맥북SettingsUI 어드레서블 에셋 등록 시 폰트 리소스 렌더링 이슈강의와 차이점 : OpenGLES3 없음 -> OpenGLCore(Deprecated) 로 대체폰트 렌더링이 되지 않고 있습니다.해결 방법 아시는분 계시면 공유 부탁드립니다. 추가Mac Silicon Chips 은 Metal 사용Canvas Renderer 충돌로 보임플레이 시Material -> shader 옵션 변경 시 텍스트 전체 보임폰트 설정 시 해당 텍스트 보임대체 안폰트도 어드레서블 등록해서 리소스 관리할지