너무 궁금해서 질문올립니다. 구글 검색해보니 PlayerController를 쓰는 예제도 있고 뭐 여러가지가 있는데 캡슐 콜라이더를 붙이고 정상적으로 이동이 되는 걸 보고 싶어서요. 강사님께서는 키네마틱이 꺼져있어서 물리 적용을 받아서 그런거 같다고 하는데 제 생각도 같습니다. 다만 키네마틱을 켜는 순간 다른 오브젝트들과 물리 상호 작용을 하지 않는 것으로 알고 있어서 물리 상호 작용하면서 정상적으로 구현하고 싶네요. 예전에도 만들다가 결국 PlayerController써서 중력 적용 시켜서 만들었는데 뭔가 안되서 포기하고 만들었던거라 찜찜한게 남아있거든요. 부탁드립니다 ㅠㅠ 아 그리고 강의 중반부터 섹션 5부터 섹션 6으로 넘어갈때 캡슐콜라이더가 꺼져있고 메쉬콜라이더가 켜져서 움직이던데 스킨메쉬렌더러라서 메쉬정보 없어서 convex가 안되는 것으로 알고 있는데 어떻게 plane위에 서있는지도 궁금합니다.
안녕하세요 강의 너무나 잘 듣고있습니다. 강의에서 CameraController의 Raycast에서 origin(플레이어) direction(카메라 방향)으로 구현하셨습니다. origin을 카메라로 direction을 플레이어 방향으로 구현하지 않으신 특별한 이유가 있을까요? 몇 가지 이유를 생각해봤는데 계산이 어렵다는 생각이 들더군요 (벽이 두껍다던지 다수의 오브젝트가 카메라를 막고있다던지..의 상황에서요) 다른 이유가 또 있을까요?
검색해보니 후반에 추가 수정하셨다는 답변글이 있는거 같은데... 아직 거기까지 진도는 못빼서요. 키보드 입력받고 캐릭터를 돌릴땐 아무 문제가 없습니다. freeze Rotation을하니 회전이 안먹더라구요. 근데 마우스 입력 부분 집어 넣으니 땅을 찍고 이동하면 꼭 도착할때쯤 마지막에 가서 x축이나 z축의 회전이 먹네요. freeze Rotation을 했음에도 불구하고... 후반부에 이 내용에 대한 수정 부분이 나온다면 계속 보면 되겠지만 현재로선 궁금해서 질문 올려봅니다. 제 생각에는 마지막 도착할 즈음에 bool 변수를 false로 바꿔서 더 움직임을 갖고 가지 않도록 막는거 같던데 거기에서 로테이션 값을 리셋시켜주는 방법으로 풀어나가야하나 생각하고 있었습니다.
마우스 클릭해서 캐릭터가 이동하는거까지 잘되는데요. 이동한 후 캐릭터가 조금씩 뜨면서 천천히 날아갑니다. Use Gravity켜면 날아가지는 않는데 어떤 힘을 받는지 천천히 앞으로 쓰러져요. Is Kinematic켜면 물리현상이 없어져서 이런게 다 괜찮아지기는하는데, 강사님 영상에서는 UnityChan이 Use Gravity랑 Is Kinematic이 체크가 안되어 있더라고요. 영상이랑 똑같이 gravity랑 kinematic 체크푼 상태에서 잘 잘작동했으면 좋겠는데. 마우스 이동 후 공중으로 천천히 올라가는걸 고치고 싶은데 어떻게 해야하나요? 코드는 다 살펴봤는데 다른 점은 없었던 것 같아요.
안녕하세요 강의를 들으며 많은 것을 배워가고 있습니다. static 키워드에 관해 두가지 질문을 드리고 싶습니다. 1. static 변수는 프로그램의 시작과 함께 데이터 영역에 할당이 된다고 배웠습니다. 의문점은 문득 코드를 살펴보다 static으로 선언된 Input이라는 변수는 인스턴스화 하기 전에 할당되는 변수인데 get으로 _input을 반환한다는게 조금 어색하게 다가왔습니다. 혹시나 하는 마음에 s_instance를 반환하는 Instance 프로퍼티를 가지고 유사하게 실험을 했습니다. static Managers s_instance;에서 static을 없애니 Instance로 선언된 프로퍼티의 get부분에서 s_instance를 static으로 선언하라는 에러가 났습니다. 위의 두 줄과 아래 두 줄이 동일한 매커니즘을 거치는 것 같은데 한쪽은 static이 없고 한쪽은 static이 있어야 하는 상황에 대해서 알고싶습니다. 2. 두번째 질문은 static 메서드와 static 변수는 정확히 어느 시점에서 할당이 되는지 궁금합니다. 구글링을 해보니 "클래스가 메모리에 올라갈때" 라는 다소 추상적인 글을 확인할 수 있었습니다. 이 말이 로딩과정에 일어나는 일이라고 이해해도 되는걸까요? 이에 대해 조금 자세히 설명을 부탁드려도 될까요?
안녕하세요. 강의 잘 듣고 있습니다. 제가 Singleton 패턴을 잘 이해한 것인지 헷갈려서.. 아래와 같이 메모해 두었는데 제대로 이해한 것일까요? //그러니까 // Manager s_instance = new Manager(); 이게 안되니까 // go라는 GameObject를 만들어 @Managers 라는 GameObject를 생성해 집어넣던지 있으면 찾아넣던지 하고 // @Managers에 Managers클래스(스크립트)를 컴포넌트로 같다붙인 뒤 // Managers 클래스의 static instance인 s_instance에다가 // @Manager라는 GameObject에 붙어있는 컴포넌트 -> Managers 클래스를 집어넣음으로써 // 결과적으로 Managers의 static instance인 s_instance에다가 // Managers 를 갖다넣음 즉 Manager s_instance = new Manager(); 이거를 // @Managers 라는 GameObject라는 애를 통해서 우회적으로 한 것임. 감사합니다.
Slerp 함수를 사용해서 북쪽을 본 상태에서 남쪽으로 방향으로 전환을 하게 되면 그 즉시 방향이 남쪽으로 변환이 되는건가요? transform.rotation = Quaternion.Slerp(transform.rotation, Quaternion.LookRotation(Vector3.back), 0.5f); transform.position += Vector3.forward * Time.deltaTime * _speed; 코드를 살펴보고 실행결과를 보면 캐릭터가 북에서 남으로 자연스럽게 움직이지만 월드 좌표 방향으로 즉시 전환되는 듯 합니다. (즉시 전환되기 때문에 ransform.position += Vector3.forward * Time.deltaTime * _speed; 이 코드가 실행됐을 때 월드좌표 방향으로 가는 것이 아닐까 하는 생각입니다..) 제 개인적인 추측이지만 궁금해서 질문 올립니다. 감사합니다.
실제 Vector3 클래스를 살펴보면 연산자 오버로딩의 선언(?) 부만 있고 구현부는 찾아볼 수 없습니다. public static Vector3 operator +(Vector3 a, Vector3 b); public static Vector3 operator -(Vector3 a); public static Vector3 operator -(Vector3 a, Vector3 b); public static Vector3 operator *(float d, Vector3 a); public static Vector3 operator *(Vector3 a, float d); public static Vector3 operator /(Vector3 a, float d); 실제 구현부는 다른곳에 정의되어있나요? 감사합니다
멀티 쓰레드 질문 드립니다. GameRoom 이 JobQueue를 가지고 있어서 멀트 쓰레드에서 안전하다고 하셨는데 GameRoom 의 Broadcast , Enter,Leave 등은 JobQueue 를 이용 하니 멀티 쓰레드에서 안전 한거 같은데 GameRoom 의 Flush 는 어떻게 안전 할수가 있나요?
유니티 특정 폴더의 mp3 파일들을 리스트로 보여주는 리스트 뷰 만드는 방법 궁금합니다. 안드로이드 디바이스 특정 폴더에 mp3파일이 여러 개 있는 경우에 전체 경로와 파일명을 같이 보여줄 수 있도록 하고싶은데 디바이스의 특정 폴더 접근과 리스트 뷰에서 프리팹을 어떻게 만드는지 몰라서 계속 막힙니다;;
[C#과 유니티로 만드는 MMORPG 게임 개발 시리즈] Part7: MMO 컨텐츠 구현 (Unity + C# 서버 연동 기초)
강의 내용을 약간 벗어난 내용 같기는 하지만 궁금해서 질문드려봅니다. Map의 콜리젼 데이터를 txt파일로 만들어서 클라와 서버에서 사용하고, 스탯 데이터와 같은 것들을 json 형태로 관리하고 있는데 이런 파일들은 얼마든지 악의적인 변경이 가능할 것 같은 생각이 들었습니다. AES 암호화 알고리즘을 C#에서 기본적으로 제공해주는 것으로 알고 있는데 파일을 암호화해서 저장하고 복호화해서 불러오는게 필요할까요? 키는 서버에서 받아서 진행하면 어떨까하는 생각이 들었습니다.
더미클라이언트 수를 500으로 설정하고 실행 했을때 500으로 유지되지는 않고 267 정도로 계속 보내게 됩니다. 프로세스 메모리는 일정하게 유지가 되구요. 이런경우 프로세스 성능에 따라서 모아보내기가 적게 자주 보내게 될수도있나요? 예를 들어 while에서 패킷을 모아보내는 수가 500이 안차더라도 보낼수 있는건가요?
첫번째 사진이 서버 IP로그구요. 밑에 사진이 유니티 클라이언트 IP로그 입니다. 유니티에서 서버로 접속할때 OnConnectCompleted Fail: ConnectionRefused 로그가 뜨면서 플레이어 케릭터가 생성이 안되는 현상이 발생했습니다. 서버에 연결이 실패한 원인을 찾아보니 서버쪽에선 아이피가 :::1인반면 유니티쪽은 127.부터 시작하는 아이피로 서로 틀리더라고요. 서버쪽 로그를 보니 더미 클라에서 모아 보내기가 계속 찍히는거 보면 문제는 없어보입니다만, 이 경우 어떻게 해야될까요? 잘 부탁드립니다 ^^
안녕하세요. "Rookiss"님, Packet Queue에 대해서 질문드리려고 합니다. Push() 에 대해서는 BackGround Thread가 계속 Push하므로 lock을 거는 이유가 맞다고 생각되는데 Pop()에 대해서는 Unity의 Main-Thread만 사용한다면 따로 lock을 걸 필요가 없다고 생각되는데 혹시 다른 이유가 있어서 lock을 거신건가요?? 답변해주시면 감사하겠습니다!
좋은 영상 올려주셔서 감사합니다. 별로 중요한 내용은 아니지만 궁금증에 한 번 질문해봅니다. 기존의 경험으로 게임을 만들 때, 무언가를 분류해야 한다면 Tag를 많이 사용했습니다. 이 영상을 보지 않고 풀링 오브젝트 패턴을 스스로 만들었다면, Poolable태그를 만들어서 풀링하고 싶은 프리팹에게 걸어줬을 것 같아요. Poolable 컴포넌트를 이용했을 때의 장점이 있다면, 알고싶습니다!