월 17,600원
5개월 할부 시다른 수강생들이 자주 물어보는 질문이 궁금하신가요?
- 미해결[C#과 유니티로 만드는 MMORPG 게임 개발 시리즈] Part3: 유니티 엔진
강의를 보다가 몇 가지 궁금한 점이 있어서 질문드립니다
1. Debug.Log나 텍스트에서 변수를 출력할 때 $를 쓰시던데 그냥 문자열 뒤에 +로 변수를 붙이는 거랑 성능상 차이가 있나요? 아니면 그냥 선호하는 스타일의 차이인가요? ex)$"점수 : {_score}" / "점수 : " + _score; 2. 유니티 최적화 관련 글을 읽어보면 대부분 Resources폴더 및 Resources.Load()를 사용하는게 메모리 관리나 최적화에 안 좋다는 얘기를 하던데 현재 강의에서 만드는 게임은 규모가 작으니 괜찮다고 해도 앞으로 직접 본인만의 게임을 만들거나 할 때는 이 방식을 그대로 써도 괜찮은지 궁금합니다.
- 미해결[C#과 유니티로 만드는 MMORPG 게임 개발 시리즈] Part3: 유니티 엔진
CrossFade 질문!
공격할때 애니매이션 속도를 조절하고싶은데 CrossFade를 사용하면서 조절하는 방법이 있을까요?? 상대방이 player를 공격할때마다 player의 공속을 떨어뜨리고 싶은데 ATTACK애니매이션에 파라미터를 주고 조절을 하고 CrossFade를 해보아도 안되고 ATTACK애니매이션을 UI상으로 속도를 조절하는것은 되는데 모든 ATTACK애니매이션을 가지고있는 애들의 속도가 바뀌어서 특정 개체 하나하나마다 개별의 속도를 가지게 하려면 CrossFade를 사용해야 하나요? 아니면 다른 방법을 사용해야 하나요??
- 미해결[C#과 유니티로 만드는 MMORPG 게임 개발 시리즈] Part3: 유니티 엔진
public GameObject Instantiate(string path,Transform parent = null)
9:20 에서 public GameObject Instantiate(string path,Transform parent = null) 이렇게 하셨는데 만약 Instantiate 할때 쿼터니언도 써야하면 매개변수로 Quaternion을 넣어주면 되나요?
- 미해결[C#과 유니티로 만드는 MMORPG 게임 개발 시리즈] Part3: 유니티 엔진
public static InputManager Input { get { return Instance._input; } 부분
5분 30초에 public static InputManager Input { get { return Instance._input; } } Instance 에서 _input 을 어떻게 사용할수있는지 이해가안가요.. 그리고 Action()으로만 실행되는데 Invoke라는게 정확이 어떤용도인가요? 구글링해서 찾아봣는데 이해가 잘안돼요 Invoke는 자신이 설정한 시간만큼 함수 시작 시간을 지연시키는 기능 CPU최적화 시키기에도 유용하고 함수 실행 순서 조절하기에도 유용
- 미해결[C#과 유니티로 만드는 MMORPG 게임 개발 시리즈] Part3: 유니티 엔진
벽을 클릭 시 하늘로 날아가거나 벽을 타는 문제
벽도 Wall 이고 바닥도 Wall 이라서 어쩔 수 없다고는 생각하지만 나중에 게임을 만들때 알려주신 것을 이용해서 '플레이어가 장애물에 가리는 문제'를 풀어냈을 때, '이 문제'를 어떻게 해결해야 할 지 궁금합니다. 다른 지점에서 벽을 클릭하면 해당 지점으로 직진하는 경우- UnityChan: isGravity TRUE, isKinematic TRUE 벽을 탄 뒤, 키보드 이동을 하면 공중에서 돌아다니는 경우
- 미해결[C#과 유니티로 만드는 MMORPG 게임 개발 시리즈] Part3: 유니티 엔진
마우스 클릭 후 도착지점에서 캐릭터가 엎어집니다.
실습중에 강의 결과와 달리 나오는 것이 있어 질문드립니다 강의 Part3: 유니티 엔진/ Camera#2/ 15:20 현상 마우스 클릭 하고,도착지점에서 캐릭터가 쓰러집니다 환경 다른 답변에서 알려주신 naver mail 로 코드를 보냈습니다 2022.3.24.목 14:39 발송 UnityChan 의 Freeze Rotation (x,y,z) 은 모두 True 입니다. 디버깅 도착지점 직전 Mathf.clamp 가 정상 동작하여 moveDist 값이 0이 됩니다. 그러나 여기서 F11 을 눌러 한 단계를 더 진행하면 transform.position 과 _destPos 이 값이 동일함에도moveDist 값이 조금 튑니다. 디버깅을 해도 의문점만 더 커지고 뭐가 잘못 되었는지 모르겠네요 ㅜㅜ
- 미해결[C#과 유니티로 만드는 MMORPG 게임 개발 시리즈] Part3: 유니티 엔진
UI 관련해서 질문드립니다
1. UI_Scene/UI_Popup의 차이-> 결국 크게보면 sortingOrder를 관리해주는지의 여부가 맞나요? 애매하긴하지만.... 가장바닥에 깔릴 용도의 UI = UI_Scene / 어떤 UI의 위로 올라올 용도인 UI = UI_Popup으로 봐도될까요?2. UI_Scene의 경우 Close(Hide/Destroy)구현은 다루지 않은것인가요? 혹시 놓친부분이 있을까요..... 3. 대부분의 UI들이 경우 빈번하게 Show/Hide 되는 경우 매번 Show/Hide하기위해서 잦은 Instantiate / Destroy가 이루어져도 괜찮을까요? 캔버스단위의 UI들을 미리 씬에 올려두고 SetActive(true/false) 하는식으로 쓸 경우 문제될여지가 있을지 궁금합니다.4. 캔버스 / 프리팹들을 관리? 나누는 기준어떤기준으로 캔버스나 프리팹들을 나누시는지 궁금합니다.심하게는 1개의 캔버스에 ui들을 추가/삭제할수도있을텐데캔버스를 나눠쓰는 기준, 프리팹도 묶는데 어떤 기준이 좋은지궁금합니다.5. 이미지에 대해- Sprite(Sprite Renderer)- Image(UI Canvas)- Raw Image(UI Canvas)각각 어떤상황에 어떤용도로 사용해야 적절한지 궁금합니다.감사합니다 ㅎㅎ
- 미해결[C#과 유니티로 만드는 MMORPG 게임 개발 시리즈] Part3: 유니티 엔진
@Pool_Root에 질문이 있습니다.
강의 정말 잘 듣고 있습니다. 제가 질문드릴 것은 @Pool_Root에서 Unity_Chan이 pool 생성이 되야 하는데 생성이 되지 않습니다. 소스를 다운받아서 poolManager나 다른 소스들을 비교해가면서 봤는데.. 도통 뭐가 문제인지 잘 모르겠습니다. 혹시 무슨 문제인지 알려주시면 정말 감사합니다. 실행된 unity인데 보시는 바와 같이 생성이 안된채로 나옵니다.
- 미해결[C#과 유니티로 만드는 MMORPG 게임 개발 시리즈] Part3: 유니티 엔진
프리팹 썸네일에서만 모델이 회색으로 나옵니다
강사님 영상에서는 씬에서 만든 탱크를 프로젝트 탭으로 옮겼을 때 프리팹 썸네일이 제대로 흰색 탱크 이미지로 나오는데 저는 이상하게 프리팹 썸네일의 모델이 회색으로 나옵니다. 다시 씬에 프리팹을 추가해보면 제대로 흰색으로는 나오는데 왜 이미지만 회색으로 나오는지 도통 모르겠습니다. 구글에 검색해봐도 저랑 같은 문제가 나타난 사람이 없는 것 같아요. 버전은 2020.3.30f1(LTS버전) 입니다.
- 미해결[C#과 유니티로 만드는 MMORPG 게임 개발 시리즈] Part3: 유니티 엔진
유니티에서 오류 발생
분명히 그대로 코드를 작성한 것 같은데 이상하게 NullReferenceException: Object reference not set to an instance of an object Managers.get_Resource () (at Assets/Scripts/Managers/Managers.cs:13) PrefabTest.Start () (at Assets/Scripts/PrefabTest.cs:11) 라는 오류를 뱉어내면서 실행해보면 탱크를 안 뱉어내네요... 제 잘못이겠지만 도저히 비교해서 봐도 알 수가 없네요... 구글에 오류 내용을 검색해봐도 뭐가 null 값이 됐다는 건지... 아래는 순서대로 매니저, 리소스매니저, 프리팹테스트, 유니티 캡쳐본입니다. 유니티는 2020.3.30f1 버전입니다.
- 미해결[C#과 유니티로 만드는 MMORPG 게임 개발 시리즈] Part3: 유니티 엔진
@Managers 오브젝트 생성 메서드 질문드립니다.
질문에 앞서 좋은 강의 감사합니다:) 13:51초 부분에서 문득 든 생각때문에 질문드립니다. GameObject go가 @Managers오브젝트에 잘 연결됬는지는 확인하고 있지만 Manager컴포넌트도 안에 있는지는 체크를 안하고있는데 이부분은 크게 고려하지 않아도 되나요??
- 미해결[C#과 유니티로 만드는 MMORPG 게임 개발 시리즈] Part3: 유니티 엔진
게임 오브젝트 던지기 질문
안녕하세요 강사님 배운 것을 토대로 게임도 만들어보고 2번째 게임 제작 중입니다. 게임 오브젝트를 드래그 앤 드롭으로 던지면 해당 속도만큼 게임 오브젝트가 날라가는 것을 구현하려고 합니다. 해당 구현부만 테스트 중이며 구글링으로는 마우스 클릭 시 오브젝트가 날라가는(?) 형식의 글 밖에 안보여서 질문드립니다. 제 나름대로 어느정도 구현을 하였는데 마우스 드래그 시작 시 이전 속도를 없애는 코드가 작동하지 않습니다. 그리고 귀찮으실 수 있겠지만 실제 게임에서는 구현을 어떤 식으로 하는지 궁금합니다. using System; using System.Collections; using System.Collections.Generic; using UnityEngine; using UnityEngine.EventSystems; public class Test : MonoBehaviour, IBeginDragHandler, IDragHandler, IEndDragHandler { Rigidbody rb; float y; float startTime, endTime; Vector3 startPostion, endPostion; private void Awake() { // y축 고정 y = transform.position.y; rb = GetComponent<Rigidbody>(); } // 드래그 중일 시 해당 객체가 따라오도록 설정 public void OnDrag(PointerEventData eventData) { transform.position = GetPosition(eventData); } public void OnBeginDrag(PointerEventData eventData) { startTime = Time.time; startPostion = GetPosition(eventData); // 드래그 시작 시 속도를 0으로 만듬(작동안함) rb.velocity = Vector3.zero; } // 드래그 종료 시 속도를 구해 해당 방향으로 날려보냄 public void OnEndDrag(PointerEventData eventData) { endTime = Time.time; endPostion = GetPosition(eventData); // 속도 = 이동거리 / 걸린시간 Vector3 dir = (endPostion - startPostion).normalized; float dis = (endPostion - startPostion).magnitude; float speed = dis / (endTime - startTime); // 해당 방향으로 속도의 10배에 가하는 힘을 가한다. rb.AddForce(dir * speed * 10f); } // 레이캐스트는 해당 객체가 아닌 해당 객체 뒤의 물체에 하며, 그 물체의 좌표를 반환 Vector3 GetPosition(PointerEventData eventData) { RaycastHit[] hits; Ray ray = Camera.main.ScreenPointToRay(eventData.position); //Debug.DrawRay(Camera.main.transform.position, ray.direction * 100f, Color.red, 1.0f); hits = Physics.RaycastAll(ray, 1000f); foreach (RaycastHit hit in hits) { if (hit.collider.name != transform.name) { return new Vector3(hit.point.x, y, hit.point.z); } } return transform.position; } }
- 미해결[C#과 유니티로 만드는 MMORPG 게임 개발 시리즈] Part3: 유니티 엔진
Animation 질문이 있습니다.
코드는 똑같은거 같은데 유니티에서 작동이 이상하게 됩니다. unity에서 마우스를 클릭하고 Run->Wait를 할 때, 0으로 떨어지지가 않습니다. 한 0.91 이정도로 밖에 떨어지지가 않네요.. 이상태로, 계속 돌아가네요... 왜이런지 디버그 하면서 봤는데도 잘 모르겠습니다.
- 미해결[C#과 유니티로 만드는 MMORPG 게임 개발 시리즈] Part3: 유니티 엔진
Raycast 오버로딩된 함수들 확인할때 사용하시는 단축키가
안녕하세요Raycast 오버로딩된 함수들 확인할때 사용하시는 단축키가 알고싶습니다.
- 미해결[C#과 유니티로 만드는 MMORPG 게임 개발 시리즈] Part3: 유니티 엔진
모바일에서 Resources 폴더 사용 문제
이번에 새로 만드는 모바일 게임에서 만들어주신 프레임워크를 활용하려고 합니다. 그런데 기기 테스트를 해보니 로고가 나간 뒤 본 화면이 뜰 때까지 1초~2초 남짓의 시간이 걸리는 것을 발견했습니다. 원인을 계속 찾다가 Resources 폴더 안의 파일들이 게임 실행 시 일괄적으로 로딩이 되어 그렇다는 얘기를 듣고 Resources 폴더를 삭제해보니 딜레이가 사라졌습니다. 모바일에서는 Resources 폴더를 사용하면 안되는 걸까요? 아니면 딜레이를 해결할 수 있는 방법이 있을까요? 제 선에서는 딜레이가 생기는 도중 로딩 화면을 넣는 걸 생각해 봤지만 방법은 모르겠습니다. 답변 부탁드립니다.
- 미해결[C#과 유니티로 만드는 MMORPG 게임 개발 시리즈] Part3: 유니티 엔진
점프 관련 질문드립니다.
안녕하세요 Rookiss강사님 강의 잘 듣고 있습니다. 유니티 엔진 Part3까지 들었고 이후에 혼자 여러가지 추가해보고 있습니다. 현재 플레이어 점프 구현 중인데 며칠동안 문제를 찾지 못해서 질문드립니다. 점프 관련 구현한 것은 네번째 사진입니다. Space를 누르면 점프 실행되고 점프 애니메이션이 끝까지 실행됩니다. 그 이후로 바닥에 내려오면 Idle 상태로 넘어가도록 했으나 넘어가고 있지 않는 걸로 봐서는 바닥과의 충돌이 안되고 있는 것으로 보이는데 원인이 무엇이 있을까요? 감사합니다.
- 미해결[C#과 유니티로 만드는 MMORPG 게임 개발 시리즈] Part3: 유니티 엔진
싱글톤 관련 질문있습니다.
안녕하세요, Rookiss님. 좋은 강의 잘 보고 있습니다! 질문이 하나 있습니다. 아래의 강의 코드를 가지고 이것저것 실험해보던 와중, 한 가지 아쉬운 점을 발견했습니다. static void Init() { if (s_instance == null) { GameObject go = GameObject.Find("@Managers"); if (go == null) { go = new GameObject() { name = "@Managers" }; go.AddComponent<Managers>(); } DontDestroyOnLoad(go); s_instance = go.GetComponent<Managers>(); } } 여기서, @Managers라는 게임오브젝트는 만들었는데 그 오브젝트에 Managers 클래스를 컴포넌트로 붙이지 않은 특이한 케이스를 가정해보았습니다. 텅 빈 @Managers 오브젝트만을 만들고 바로 실행해보니 오류가 나더군요. 디버깅해보니, 이 코드가 @Managers라는 오브젝트는 있는데(go != null 인 경우), Managers 스크립트가 컴포넌트로는 없는 경우를 포착하지 않아 _instance에 null을 집어넣기 때문에 발생했습니다. 이 상황까지 고려해서 아래와 같이 코드를 짰는데, 이렇게 해도 괜찮은 걸까요? static void Init() { if (s_instance == null) { GameObject go = GameObject.Find("@Managers"); if (go == null) { go = new GameObject() { name = "@Managers" }; go.AddComponent<Managers>(); } else if (go.GetComponent<Managers>() == null) { go.AddComponent<Managers>(); } DontDestroyOnLoad(go); s_instance = go.GetComponent<Managers>(); } }
- 미해결[C#과 유니티로 만드는 MMORPG 게임 개발 시리즈] Part3: 유니티 엔진
강의를 바탕으로 UI_Inventory구현
챕터 3 UI챕터부문을 바탕으로 다른 프로젝트 인벤토리 자동화를 구현했는데 본 영상에선 팝업 UI들을 Instantiate 한뒤 Destory로 없애주었는데 인벤토리 같은경우는 많이 사용하는 UI이고 생성시마다 Slot들을 생성해주는게 SetActive(false)를 이용하는 것보다 더 좋은 방법인가요??
- 미해결[C#과 유니티로 만드는 MMORPG 게임 개발 시리즈] Part3: 유니티 엔진
안녕하세요 잘 모르겠는 참조 문제가 나와 질문드립니다
안녕하세요 수업 들으면서 진행하구있는데요! 코드도 잘 따라했구 오타도없는것같은데 참조 문제가 나와서 질문드립니다 이 오류는 다른 게임 오브젝트에 PlayerController를 컴포넌트로 넣어 게임을 진행했을때 발생을 하는데 문제는 유니티와 비쥬얼스튜디오를 완전히 종료후 재실행 하면 오류가 나오지않아요 ㅠ Tank prefab을 진행할때도 탱크에 PlayerController를 넣어줬을때도 오류가 나와서 ㅠㅠ 계속 재부팅하면 사라지는 참조오류가 나오네요 ㅠ 왜그런지 알 수있을까요 ㅠ
- 미해결[C#과 유니티로 만드는 MMORPG 게임 개발 시리즈] Part3: 유니티 엔진
BaseController 충돌기 질문
안녕하십니까 강사님 강의 코드 구조를 토대로 간단한 게임을 만들고 있습니다. PlayerController가 BaseController를 상속받고 있는데 해당 플레이어가 Collider가 있는 물체와 충돌했을 시OnCollisionEnter를 통해 코드 실행권을 가져오고 싶습니다. BaseController 스크립트가 직접 달려있는게 아니다보니 BaseController의 OnCollisionEnter가 작동하지 않는것 같은데 가져올 수 있는 방법이 있을까요? 코드 구조에 관한 내용이다보니 검색으로 찾기가 힘드네요.