묻고 답해요
145만명의 커뮤니티!! 함께 토론해봐요.
인프런 TOP Writers
-
미해결[C#과 유니티로 만드는 MMORPG 게임 개발 시리즈] Part3: 유니티 엔진
Quaternion.Slerp 적용하면 유니티 짱이 20~30도 쓰러져요.
화면 클릭해서 이동시 transform.LookAt(_destPos); 위 코드 대신부드럽게 회전하기 -- 아래 코드로 하면 마지막 멈출때 유니티 짱이 쓰러짐. ㅜㅜtransform.rotation = Quaternion.Slerp(transform.rotation, Quaternion.LookRotation(dir), 5 * Time.deltaTime); //t는 회전 속도 trasform.LookAt(_destPos)일때는 쓰러지지 않습니다.
-
해결됨유니티 머신러닝 에이전트 완전정복 (기초편)
ML-agents 살펴보기 5페이지 질문입니다.
여기서 stacked vectors를 3으로 하면 space size도 9가 되는게 맞나요?
-
미해결[유니티 레벨 업!] 모듈식으로 개발하는 퀘스트&업적 시스템
궁금한점
MVC, MVP 를 알게됬는데 이 강좌같은 경우는각각 델리게이트 이벤트에 등록하는게 MVP같은데 MVP에 해당하는건가요?관련 예제를 찾아봐도 잘 이해가 안되서여 ㅜ
-
해결됨두고두고 써먹는 유니티 VR
UI 버튼과 컨트롤러 인터렉션
안녕하세요 강사님! 좋은 강의 감사드립니다.강의를 들으며, 개인적으로 유니티 프로젝트를 만들고 있습니다.플레이 시작 전 UI Canvas에 기본적인 플레이 설명과 시작 버튼을 배치하였고, 시작 버튼을 누르면 Canvas는 비활성화되는 형태로 만들었습니다.그런데 pc상의 시뮬레이터에서 마우스로 시작버튼을 눌렀을 때는 잘 작동하는데, 오큘러스 퀘스트2 컨트롤러로는 버튼 클릭이 안 되더라구요 ㅜㅜ 지금 제 프로젝트 상태에서 어떤 식으로 클릭되게 해야 할지 잘 모르겠습니다..오른쪽 컨트롤러에 레이캐스트 설정도 해보았는데, 광선이 UI를 그냥 통과해버립니다 ㅠ
-
해결됨[C#과 유니티로 만드는 MMORPG 게임 개발 시리즈] Part3: 유니티 엔진
UnityChan이 Cube를 몇번 튕긴 후 Cube를통과합니다.
충돌 테스트에서UnityChan이 Plane이나 Cube에 퉁기기는 하지만, 여러번 충돌하면 결국 통과합니다. 통과 못 하도록 막을 수 없나요?
-
미해결[C#과 유니티로 만드는 MMORPG 게임 개발 시리즈] Part4: 게임 서버
Serialization #3 this.name
안녕하세요!강의를 수강하다가 질문이 생겨서 글 남깁니다.Serialization #3[08:30]name = "ABCD"의 문자열의 길이는 4이지만 byte배열로 변환하면 길이가 4byte가 아니라 8byte가 되는 것 까지는 이해하였습니다. 왜냐하면 C#은 UTF-16을 사용하므로 UTF-16은 문자들이 각 2Byte이기 때문입니다.Encoding.Unicode.GetByteCount(this.name)에서UTF-16기준으로의 바이트 배열로 변환됐을 때의 수를 가져오는 것이니까 그러면 위와 같이 8Byte인 것 같아서 어떻게 4Byte인지 궁금증이 생겨 질문 남깁니다!
-
미해결유니티 머신러닝 에이전트 완전정복 (기초편)
sensor에 추가된 값들의 판독
안녕하세요. 강의 잘 듣고 있습니다.질문이 있는데요.CollectObservations()에서 sensor에 값들을 추가하는데, sensor를 처리하는 곳에서는 추가된 값들이 어떤 값들인지는 어떻게 알고 처리가 되는 건가요?
-
해결됨[C#과 유니티로 만드는 MMORPG 게임 개발 시리즈] Part3: 유니티 엔진
구독에관해 질문있습니다.
Managers.Input.MouseAction -=OnMouseClickedManagers.Input.MouseAction +=OnMouseClicked 가 PlayerController안에 있는데 PlayerController가 여러게임 오브젝트에 붙어있을경우 -=OnMouseClicked로 먼저 제거한후 +=OnMouseCliked로 구독하니까 여러 오브젝트중 하나만 움직여야 한다고 생각했는데 그렇지 않아서 질문합니다.MouseAction에는 같은 이름의 OnMouseClicked를 추가하더라도 각 오브젝트마다 각각 다른 OnMouseClicked로 관리되나요?
-
미해결[C#과 유니티로 만드는 MMORPG 게임 개발 시리즈] Part4: 게임 서버
Send lock 관련 질문
public void Send(byte[] sendBuff) { lock (_lock) { _sendQueue.Enqueue(sendBuff); if (_pendingList.Count == 0) RegisterSend(); } } void OnSendCompleted(object sender, SocketAsyncEventArgs args) { lock (_lock) { if (args.BytesTransferred > 0 && args.SocketError == SocketError.Success) { try { _sendArgs.BufferList = null; _pendingList.Clear(); // Doing if (_sendQueue.Count > 0) RegisterSend(); } catch (Exception e) { Console.WriteLine($"OnSendCompleted Failed {e}"); } } } }수업을 들으면서 Send와 OnSendCompleted에 lock이 서로 다른 두개이상의 쓰레드가 동시에 sendQueue, pendingList에 Write하는 것을 방지하는 것이라고 이해했습니다.그리고 Send의 if문이 다른 쓰레드가 전송중일때를 체크하는 것이라고 들었는데 저 2개의 lock구조에서, 쓰레드A가 OnSendCompleted의 lock구역안에 있을 때 쓰레드B가 Send의 lock구역에 진입이 가능한지 궁금합니다.만약 접근이 안된다면 pendingList.Count가 항상 0이 되지않을까 생각하고 있습니다.
-
해결됨[C#과 유니티로 만드는 MMORPG 게임 개발 시리즈] Part3: 유니티 엔진
섹션 8.Scene SceneManager(1) 관련하여 질문이 있습니다
강의 영상 7분 경 씬 UI인 UI_Inven를 화면에 띄우는 코드를 PlayerController.cs 에서 GameScene.cs로 옮겼는데 Null 오류가 발생했습니다. PlayerController.cs 에 위 코드가 있을 때는 정상적으로 작동하는데 옮기면 계속 오류가 발생합니다.오류로그hierachy 창인스펙터창코드(GameScene.cs)public class GameScene : BaseScene{ void Start() { Init(); } protected override void Init() { base.Init(); SceneType = Define.Scene.Game; GameManager.UI.ShowSceneUI<UI_Inventory>(); } public override void Clear() { }}코드(GameManager.cs)using System.Collections;using System.Collections.Generic;using System.Runtime.InteropServices.WindowsRuntime;using UnityEngine;public class GameManager : MonoBehaviour{ static GameManager instance; static GameManager Instance { get { Init(); return instance; } } InputManager input = new InputManager(); public static InputManager Input { get { return Instance.input; } } ResourceManager resources = new ResourceManager(); public static ResourceManager Resources { get { return Instance.resources; } } private DataManager data = new DataManager(); public static DataManager Data { get { return instance._data; } } private UIManager ui = new UIManager(); public static UIManager UI { get { return instance._ui; } } void Start() { Init(); instance.data.Init(); } void Update() { input.OnUpdate(); } static void Init() { if(instance == null) { GameObject go = GameObject.Find("@GameManager"); if (go == null) { go = new GameObject { name = "@GameManager" }; go.AddComponent<GameManager>(); } DontDestroyOnLoad(_go); instance = go.GetComponent<GameManager>(); } }}
-
미해결[C#과 유니티로 만드는 MMORPG 게임 개발 시리즈] Part3: 유니티 엔진
Managers 질문
안녕하세요.선생님께서 말씀해주신 내용에서 궁금한 점이 있어서 두 가지 질문 드립니다. 1:00 강의선생님께서 컴포넌트와 관련된 클래스를 많이 생성했을 때Update() 함수가 많이 호출되고그 안에서 각각 Input.GetKey를 많이 호출하면 성능부하가 생길 것이라고 이해했습니다.KeyAction 에다가 OnUpdate 함수를 구독하면 각 함수들이 독립적, 순차적으로 실행될 것으로 이해됩니다.위처럼 이해한다면 Update에서 각각 호출하는 것과 성능부하가 생긴다는 것이 잘 이해가 되지 않습니다. 선생님께서 말씀하신 인풋을 각각 관리하면 추후 유지보수에 어렵다는 내용에는 이해가 가지만 성능부하 관련해서는 아직 제 지식이 짧아서 이해가 잘 가지 않습니다.. Managers 내부 InputManager 변수Managers 클래스를 싱글톤으로 생성한 이유는 Managers를 여러 오브젝트에 붙였을 때 따로 생성되고,여러개가 생성될 필요가 없기 때문이라고 이해했습니다.그렇다면 Mangers 내부 변수들도 저는 한번씩 생성되어야 된다고 생각이 됩니다. 하지만 InputManager _input = new inputManager();를 변수에서 생성한다면 Managers 클래스는 한번씩 생성되지만 InputManager 클래스는 여러 object에 Managers.cs를 어태치 한다면 계속 생성된다고 이해됩니다.혹시 제가 이해한 내용이 맞을까요? 맞다면 static 변수로 선언해야 되나요?? 그리고 좋은 강의 제공해주셔서 정말 감사합니다!
-
미해결[라이브 멘토링] 유니티 뱀파이어 서바이벌 장르 모작
IsSubclassOf 질문입니다
else if(type == typeof(ProjectileController)) { GameObject go = Managers.Resource.Instantiate("FireProjectile.prefab", pooling: true); go.transform.position = position; ProjectileController pc = go.GetOrAddComponent<ProjectileController>(); Projectiles.Add(pc); pc.Init(); return pc as T; } 총알이 계속 안불러와져서 코드실수인가 해서 계속 체크하다가 중단점 잡고 보니else if (typeof(T).IsSubclassOf(typeof(ProjectileController)))이 부분을else if(type == typeof(ProjectileController))이렇게 바꾸고나니 총알이 제대로 불러와지더라구요 뭐가 문제인가요?? 강사님 코드에서는 isSubclassOf 를 쓰셔도 잘 발사가 되는거 같은데
-
미해결[C#과 유니티로 만드는 MMORPG 게임 개발 시리즈] Part3: 유니티 엔진
Manager클래스안에 다른매니저들에 static붙이면 안되는이유
저는 InputManager나 ResourceManager도 하나만 존재해야할것 같아서 static을 붙여주었는데 저렇게 빨간줄이 그입니다 ㅠ.. 혹시 왜이러는지 알려주실수 있을까요?
-
미해결[C#과 유니티로 만드는 MMORPG 게임 개발 시리즈] Part4: 게임 서버
디스어셈블리가 어디에 있는지 모르겠습니다 .
안녕하세요 수강생입니다. 강의를 듣다가 디스어셈블리를 찾고 있는데 없습니다. 강사님 VS에는 있는데 제가 쓰고 있는 VS에서는 없네요 어떻게 하면 될까요?
-
해결됨[라이브 멘토링] 유니티 뱀파이어 서바이벌 장르 모작
캐릭터가 가만히 있어도 계속 밀려요
캐릭터가 몬스터한테 둘러쌓여서 밀린후에 빠져나가고 가만히 있으면 아무런 동작을 하지 않음에도 캐릭터가 천천히 밀리고 있어요그래서 원래 코드인Vector3 dir =_moveDir * _speed * Time.deltaTime;transform.position += _dir;이 부분을 rigidbody를 가져와서 아래와 같이 바꿨는데Vector2 dir = _moveDir * _speed * Time.deltaTime;_rigid.MovePosition(_rigid.position + dir);문제 되는 부분이 있을까요?? 해결방법이 추후 강의목차에서 해결이 되나요?
-
해결됨[라이브 멘토링] 유니티 뱀파이어 서바이벌 장르 모작
완강후, UI_Base의 Start() 함수 호출순서에 관한 질문
UI_Base Start() 함수 호출순서에 관한 질문 안녕하세요, 유니티강의파트3과 본 강의를 모두 수강하고, 올려주신 프로젝트코드로 공부하고 있는 도중 혼자 해결하기 어려운 부분이 생겨 질문 남깁니다. UI_Base.cs 클래스의 Start()함수 호출순서에 관한 질문인데요, 먼저 UI_TitleScene 클래스의 실행흐름부터 제가 이해한대로 말씀드리면Awake() -> Init() -> Start() 순으로 실행되는것으로 파악했습니다.이때 아시다시피 UI_TitleScene은 UI_Scene을 상속받고, UI_Scene은 UI_Base를 상속받습니다.Init()함수는 Abtract class인 UI_Base의 virtual 함수이고요.여기까지는 쉽게 잘 이해되었습니다.[UI_TitleScene.cs] -- 다음 스타트버튼을 누르면 로비씬으로 넘어가는데,UI_LobbyScene에서는 아래와 같이 오버라이드된 Init()함수를 호출하는 부분이 없습니다.참조를 찾아보아도 UI_LobbyScene의 Init()을 부르는 부분은 없고, 디버깅 중 호출스택을 살펴보면 UI_Base의 Start()에서 호출되었다고 나옵니다.이 부분이 이해가 안갑니다!! [UI_LobbyScene.cs] -- 여기서 제가 이해 안되는부분을 좀 더 자세히 말씀드리자면,UI_TitleScene, UI_LobbyScene 모두 UI_Scene을 상속받고 UI_Scene은 UI_Base를 상속받는 구조인데, 왜 UI_LobbyScene의 Init()함수 실행시 UI_Base의 Start()함수에서 넘어오는지가 궁금합니다.[UI_Base.cs]UI_TitleScene에 정의된 Init()은 동일클래스내의 Awake()부분에서 Init()을 호출하고 있으니 이해가 되는데, UI_LobbyScene은 Init()함수를 명시적으로 호출하는 부분이 없고, UI_Base의 Start()함수내에서 Init() 실행시 UI_LobbyScene의 override된 Init()을 실행하는점이 이해가 안됩니다. 아마 UI_Base의 Start()함수 실행시점을 파악하지 못해 생긴 궁금증인 것 같기도 합니다.. 왜 UI_TitleScene의 코드가 Awake(), Start()될 때UI_Base의 Awake()나 Start()가 실행되지 않고, 게임시작버튼을 누르고 로비로 넘어갈 때 왜 실행되는지가 궁금합니다. 제가 이해하지 못한 부분을 설명하기가 굉장히 어렵네요ㅠ감사합니다.
-
해결됨두고두고 써먹는 유니티 VR
Unity 버젼 질문드립니다
강사님 안녕하세요Unity 2021.3.4f1 LTS 버젼을 사용하는데프로젝트 생성 시 템플릿 종류가 2D, 3D, 2D URP 3가지만 있고강의에서 선택한 3D URP는 없는데다른 버젼을 설치해보면 템플릿들이 또 달라서..3D URP를 사용하려면 어떻게 해야되는지 확인 부탁드립니다~
-
미해결유니티 머신러닝 에이전트 완전정복 (기초편)
드론 ddpg.py코드 실행하면 드론이 멈춥니다.
ddpg.py 코드를 실행하면 드론이 처음에는 날아가다 몇번 날아가다 멈춰버립니다.해결방법이 무엇인가요??뭐가 문제인지 모르겠습니다.코드는 githug에 있는걸 그대로 붙여넣었습니다.
-
미해결[실전 게임 코드 리뷰] 유니티 클리커 게임
루키스님 바쁘시겠지만 혹시 한 번만 봐주실 수 있나요?
선생님 강의를 듣고 교육용 프로그램을 만들게 되었습니다.상업용으로 사용할 것은 아니고 일반 학생들과 강의 때 하려고 몇달 간 만들었는데유니티에서는 작동에 전혀 문제가 없다가 apk로 빌드하여 모바일 환경에서 실행하니첫화면에서 버튼 클릭이 되지 않습니다.public override bool Init() 이 전혀 작동하지 않는 듯하고 UI팝업 관련 된 것들도 모두작동이 안 됩니다.정말 바쁘시겠지만 확인 혹은 확인하시지 않더라도 간단한 조언 부탁드려도 될까요
-
미해결[C#과 유니티로 만드는 MMORPG 게임 개발 시리즈] Part7: MMO 컨텐츠 구현 (Unity + C# 서버 연동 기초)
처음 등장했을때 죽지 않는 경우가 발생합니다.
https://blog.naver.com/we5046/223172915438강사님께서 진행하신대로이동할때 Map에게 모든 정보를 넘기므로 충돌을 관리하는데, EnterGame 부분에 Map.ApplyMove를 추가하여 플레이어가 아무 이동을 하지 않고 0,0 좌표에 있을때 화살 타격이 불가능하여 추가 할 경우 타격을 입게 될 것임이 분명한데 해당 영상을 보시면 Unity에서 실행 하는 Player는 타격을 입고, 그뒤 추가로 생성하는 Player또한 타격을 입는데, 맨 처음 같이 생성된 Player들중 한명을 움직이지 않고 냅두면 화살을 피하는 문제가 발생합니다.이러한 오류가 발생하는 이유가 무엇인지 궁금합니다. 해당 오류가 왜 발생하는지 생각해보니, 처음 실행된 Player1에게는 새로 등장한 Player2의 정보가 Player1의 맵으로 전달이 되지않은 것인가 라는 문제 점을 생각해보게 되었습니다.그래서 기존 EnterGame에서 해당 플레이어의 등장을 타인한테 정보전송하는 부분에 해당 플레이어의 위치를 Map에 전파하도록 작성하니 정상적으로 작동하게 되었습니다.