월 17,600원
5개월 할부 시다른 수강생들이 자주 물어보는 질문이 궁금하신가요?
- 미해결[C#과 유니티로 만드는 MMORPG 게임 개발 시리즈] Part3: 유니티 엔진
질문 물어본거 말고 다른거에 대한 답변이 AI로 달리는데...
유니티에서 bake를 해도 해당영역이 어디인지 보이지가 않고(NavmeshDisplay가 뜨지 않습니다)검색을 해도 도저히 못찾겠습니다...라고 질문했는데안녕하세요, 인프런 AI 인턴입니다.NavMesh가 제대로 표시되지 않을 때 문제 해결을 위하여 다음과 같은 몇 가지를 확인해 볼 수 있습니다.NavMesh Agent:해당 게임 오브젝트에 NavMesh Agent 컴포넌트가 추가되었는지 확인해주세요.NavMesh Bake 설정:Navigation 패널을 열고, Bake 탭에서 올바른 옵션으로 베이킹을 진행했는지 점검해보세요.레이어 설정:베이킹 과정에서 Navigation Static이 체크된 레이어를 대상으로 하고 있는지 확인래주세요.NavMesh Display 옵션:Unity 에디터 상단의 Navigation 창을 열고, Scene 뷰에서 ‘Show NavMesh’가 활성화되어 있는지 확인해보세요.에디터 버그 여부:때때로 Unity 에디터가 제대로 상태를 업데이트하지 못하는 경우가 있습니다. 에디터를 재시작하여 문제가 해결되는지 확인해보세요.위 단계를 모두 확인하셨는데도 문제가 해결되지 않으면, 유니티 환경 설정의 문제일 수 있으므로 유니티 커뮤니티나 포럼에 질문을 올려 도움을 요청하시는 것이 좋습니다.강좌에 대한 자세한 지원이 필요하시면, ‘문의하기’ 옵션을 통해 직접 문의하실 수도 있습니다.인프런 강의 내용과 관련하여 강의 FAQ를 참조하시면 도움을 받으실 수 있습니다.라고 답변이 달렸습니다.그리고 그에 대한 질문을 다시 답변으로 달았는데 답변이 달리지 않고,다른 질문들에도 이미 해보고 안된다고 물어보는 질문을 남겼는데 또 이거 해봤냐고 물어보는 AI 답변이 달리는데(그리고 코드와 자료를 첨부한 질문도 AI는 보지도 않고 다른 답변을 답니다)어떤식으로 질문해야 제대로된 답변을 받을수 있나요?
- 미해결[C#과 유니티로 만드는 MMORPG 게임 개발 시리즈] Part3: 유니티 엔진
State Machine #2 에 대해서 질문드립니다.
anim.SetFloat("speed", _speed); anim.SetFloat("speed", 0); 이 두 가지를 통해서 애니메이션의 파라미터값을 변경하는 것 까지는 완료했습니다.그런데 속도가 10이 되어도 웨이트의 애니메이션이 다 완료가 되어야 런으로 넘어갑니다. 파라미터가 바뀌면 바로 애니메이션도 바뀌게 하고 싶은데 어떤 옵션을 건드려야 할까요?<speed가 10이 되어도 WAIT가 재생되고, 계속이면 WAIT가 끝난 후에 RUN으로 넘어갑니다.>
- 미해결[C#과 유니티로 만드는 MMORPG 게임 개발 시리즈] Part3: 유니티 엔진
질문있습니다
몬스터 anim이 WAIT 에서 RUN으로 animator에서는 변경이 되는데 몬스터 자체 내에서 계속 Idle 상태입니다.--> WAIT 일 때도 모션이 Idle , RUN 일 때도 Idle 입니다using System.Collections; using System.Collections.Generic; using UnityEngine; public abstract class BaseController : MonoBehaviour { [SerializeField] protected Vector3 _destPos; [SerializeField] protected Define.State _state = Define.State.Idle; [SerializeField] protected GameObject _lockTarget; public virtual Define.State State { get { return _state; } set { _state = value; Animator anim = GetComponent<Animator>(); switch (_state) { case Define.State.Idle: anim.CrossFade("WAIT", 0.1f); break; case Define.State.Moving: anim.CrossFade("RUN", 0.1f); break; case Define.State.Skill: anim.CrossFade("ATTACK", 0.1f, -1, 0); break; case Define.State.Die: break; } } } private void Start() { Init(); } void Update() { switch (State) { case Define.State.Idle: UpdateIdle(); break; case Define.State.Moving: UpdateMoving(); break; case Define.State.Die: UpdateDie(); break; case Define.State.Skill: UpdateSkill(); break; } } public abstract void Init(); protected virtual void UpdateDie() { } protected virtual void UpdateIdle() { } protected virtual void UpdateMoving() { } protected virtual void UpdateSkill() { } } using System.Collections; using System.Collections.Generic; using UnityEngine; using UnityEngine.AI; public class MonsterController : BaseController { Stat _stat; [SerializeField] float _sacnRange = 10; [SerializeField] float _attackRange = 2; public override void Init() { _stat = gameObject.GetComponent<Stat>(); if (gameObject.GetComponentInChildren<UI_HPBar>() == null) Managers.UI.MakeWorldSpaceUI<UI_HPBar>(transform); } protected override void UpdateIdle() { Debug.Log("Monster UpdateIdle"); GameObject player = GameObject.FindGameObjectWithTag("Player"); if (player == null) return; float distance = (player.transform.position - transform.position).magnitude; if (distance <= _sacnRange) { _lockTarget = player; State = Define.State.Moving; return; } } protected override void UpdateMoving() { Debug.Log("Monster UpdateMoving"); // 플레이어가 내 사정거리보다 가까우면 공격 if (_lockTarget != null) { _destPos = _lockTarget.transform.position; float distance = (_destPos - transform.position).magnitude; if (distance <= _attackRange) { State = Define.State.Skill; return; } } // 이동 Vector3 dir = _destPos - transform.position; if (dir.magnitude < 0.1f) { State = Define.State.Idle; } else { // TODO NavMeshAgent nma = gameObject.GetComponent<NavMeshAgent>(); nma.SetDestination(_destPos); nma.speed = _stat.MoveSpeed; transform.rotation = Quaternion.Slerp(transform.rotation, Quaternion.LookRotation(dir), 20 * Time.deltaTime); } } protected override void UpdateSkill() { Debug.Log("Monster UpdateSkill"); } void OnHitEvent() { Debug.Log("Monster onHitEvent"); } } 선생님이 올리신 Prefab의 knight 가 아닌 asset store에서 다운 받은 (Warrior Pack Bundle 2 FREE) 입니다.Unity Chan으로 실행시 잘 움직이고 선생님 자료로 Knight를 만들어서 작동시 잘 움직이지만다운받은 Asset으로는 작동이 안되는데 이유를 잘 모르겠습니다.https://drive.google.com/file/d/1bV4QnQceT30opv8t34qPgKt4bfctjut8/view?usp=drive_link
- 미해결[C#과 유니티로 만드는 MMORPG 게임 개발 시리즈] Part3: 유니티 엔진
질문 있습니다
TextMeshProUGUI 변수를 추가해서 에디터에서 텍스트를 드래그 드롭으로 할당해주었는데 버튼을 누를때 계속해서 NullExecption 에러가 나서 확인해보니 text 변수에 아무것도 가져와지지가 않습니다. 왜 이러는걸까요 ㅠㅠ
- 미해결[C#과 유니티로 만드는 MMORPG 게임 개발 시리즈] Part3: 유니티 엔진
특정 위치에서 player가 Monster의 바로 옆을 click하면 버그가 발생합니다.
player가 현 위치에서 해당 지점을 이동하고자 클릭하면(마우스는 Monster가 아닌 Ground를 가리켜서 cursor icon은 HandIcon상태) 캐릭터가 monster앞에서 movespeed가 느려지고 해당 지점(Ground)으로 가는게 아니라 몬스터의 position에 가면서도 monster를 공격하는게 아닌, 몬스터에게 이동만 하는 상태가 나타나는 버그가 발생합니다. (공격을 하지 않고 이동만 하는 모습) 이를 해결해보고자 여러차례 시도해보다가 결국 실패해서 질문으로 남깁니다. -공격#2
- 미해결[C#과 유니티로 만드는 MMORPG 게임 개발 시리즈] Part3: 유니티 엔진
Navemesh Display
유니티에서 bake를 해도 해당영역이 어디인지 보이지가 않고(NavmeshDisplay가 뜨지 않습니다)검색을 해도 도저히 못찾겠습니다...
- 미해결[C#과 유니티로 만드는 MMORPG 게임 개발 시리즈] Part3: 유니티 엔진
VS2019에서 마우스 호버 시 상세 툴팁이 보이지 않습니다
설정이 필요한 것인데 제가 놓친 것인지 VS에서 툴팁 설명을 보고 싶은데 디스크립션이 나오지 않습니다.예를 들어 Time.deltaTime; 에서 deltaTime에 마우스 호버 시 가장 첫번째 줄인 float Time.deltaTime { get; } 까지만 출력됩니다.어떻게 설정할 수 있을까요?
- 해결됨[C#과 유니티로 만드는 MMORPG 게임 개발 시리즈] Part3: 유니티 엔진
Managers에서 OnUpdate()함수 호출이요
안녕하세요, 궁금한게 있어서요. inputManager를 생성하고 OnUPdate() 메소드를 호출하는데 있어서 43줄, 44줄의 _input.OnUpdate()로 접근하는 것과 Input.OnUpdate()로 접근해서 호출하는게 어떤 차이가 있을까요? _input은 인풋매니저를 인스턴스화 한것 같고, Input은 매니저스가 들고 있는 인풋매니저인것 같은데 제가 맞게 접근하는건지 헷갈립니다. 둘 다 테스트 해봤는데 정상적으로 업데이트는 되는 것 같은데 둘 중 어떤 것으로 접근하는게 더 맞는지 궁금합니다.
- 미해결[C#과 유니티로 만드는 MMORPG 게임 개발 시리즈] Part3: 유니티 엔진
점프 관련하여 질문있습니다.
간단하게 리지드바디의 impulse를 통하여 점프를 구현하고자 합니다. 간단히이렇게 점프를 업데이트에서 처리하도록 했는데, impulse로 힘을 준 다음 줄의 프린트 문이 (0, 0, 0)이 나옵니다.인게임에서는 점프를 하여 하늘로 가고 있음에도 불구하고요.분명히 임펄스로 힘을 준 상태여서, 점프파워만큼 (0, 점프파워, 0)이 나와야 하는데, 0이 나오고, 만약 지형의 경사로 인해 내려가는 힘이 작용하고 있었다면, 음수도 나옵니다. 업데이트와 픽스드업데이트의 문제인 것도 같은데, 어떻게 어떤 것이 문제인지 파악할 수 있는지 감이 안옵니다. 어느부분을 알아봐야 실마리를 찾을 수 있을지 모르겠습니다.
- 미해결[C#과 유니티로 만드는 MMORPG 게임 개발 시리즈] Part3: 유니티 엔진
press, pointdown, pointup부분이요
24줄의 코드가 이해가 되지 않아서 문의 드려요.왼쪽 마우스 버튼을 클릭한 이벤트가 발생 시에, 처음으로 누른상태라면 PointDown 이벤트와 누른시간을 적립해주는 걸로 보이는데요. 여기서 PointDown은 길게 누르고 있는 상태로 알고 있는데요. 이미 한번 눌려진 상태 pressed =true에서 왼쪽마우스 이벤트가 발생했을 시에 실행시켜줘야 하는거 아닌가 의문이 들어서요. 24줄에서의 조건을 _pressed ==true일 때로 고쳐야 되는거 아닌가 의문이 들어서요. ㅠ 또, 36라인에서 Time.time은 실행시간이라고 알고 있는데 이거는 마우스 왼쪽버튼을 클릭하지 않은 실행시간, 즉 마우스를 뗀 시점에서부터 실행시간을 의미하는건가요? 저는 36줄에서 if(_pressedTime < 0.2f) 이렇게 수정하면 클릭으로 판별하는 건 줄 알았는데 어떻게 코드를 분석해야 할지 모르겠어요. 완강하고 프레임워크를 익히려 혼자 분석하고 코드를 쳐보면서 외우고 있는데요. 궁금증이 생기네요.
- 미해결[C#과 유니티로 만드는 MMORPG 게임 개발 시리즈] Part3: 유니티 엔진
에셋 다운로드
수업에서 사용한 에셋을 다운로드하고싶은대.. 어디에있나요? 구름표시가 안보여요...
- 해결됨[C#과 유니티로 만드는 MMORPG 게임 개발 시리즈] Part3: 유니티 엔진
캡슐콜라이더 적용해서 몬스터와 충돌시 회전문제
유니티짱과 몬스터 캡슐콜라이더 설정 한 후에 충돌 하면 유니티짱이 회전을 해서 이런 모습으로 변합니다. 거의 90도 꺾여있는듯이요.아래는 유니티짱의 컴포넌트들인데요. 뭔가 설정이 잘못된 부분이 있나요?
- 미해결[C#과 유니티로 만드는 MMORPG 게임 개발 시리즈] Part3: 유니티 엔진
이전에 PlayerController의 간헐적 버그에 질문 드렸던 사람입니다.
https://www.inflearn.com/questions/1033120/%ED%94%8C%EB%A0%88%EC%9D%B4%EC%96%B4-%EA%B3%B5%EA%B2%A9-%EC%A4%91-%EA%B0%84%ED%97%90%EC%A0%81%EC%9C%BC%EB%A1%9C-%EC%9D%B4%EB%8F%99%ED%98%84%EC%83%81%EC%9D%B4-%EB%B0%9C%EC%83%9D%ED%95%A9%EB%8B%88%EB%8B%A4 일전에 작성해 답변을 얻었던 게시글 입니다. 일단 몬스터는 계속 플레이어를 피격하고있고, 사운드 재생 등 플레이어의 애니메이션 무한재생을 제외하고는 나머지의 정상동작을 보아 에디터 자체가 무한루프에 걸린것은 아닐것이라 생각하였고클릭이벤트 발생에 확률적으로 문제가 있을것같다는 것을 생각해보고 코드를 면밀히 확인 해보았는데,ATTACK 애니메이션의 CrossFade 함수에 4번째 인수 (normalizedTimeoffset) 를 0으로 지정하니순간적으로 광클을 하게되면 Move 애니메이션을 무한재생하면서 아무런 동작도 취할수 없는 버그가 해결되었습니다.< CrossFade("ATTACK", 0.1f, -1 , 0 ); 으로 변경하고, ATTACK 애니메이션 클립의 LoopTime을 해제하였습니다. > 되짚어보니저는 저 인수를(normalizedTimeoffset) 애니메이션클립의 LoopTime 을 키는것과 같은 효과라고 생각하여 따로 인수를 두지않고 LoopTime을 키는것으로 대체했던 기억이 있었습니다. 저 네번째인수 (NormalizedTimeoffest)을 활성화 한 이후로부터 버그가 해결이 된 이유가 궁금합니다.저게 활성화 되지않으면 클릭이벤트가 씹힌다던가 그러한 문제가 발생하는건가요?
- 미해결[C#과 유니티로 만드는 MMORPG 게임 개발 시리즈] Part3: 유니티 엔진
실무에서 New Input System은 사용 안하나요??
실무에서 New Input System은 사용 안하나요??
- 미해결[C#과 유니티로 만드는 MMORPG 게임 개발 시리즈] Part3: 유니티 엔진
매니저를 만드는데 이런경우는 어떻게하나요?
기존의 매니저들을 인풋,ui,리소스 등등을 따라서 만들어 봤는데요. 진짜 신세계더라구요.. 그동안에 코드가 막 엉키고 정리도 잘안되고있었는데 저렇게 나눠서쓰니까 코드 분류하기가 너무 편하더라구요.. 그래서 이번에 네트워크 매니저도 하나 만들어서 쓸려고하고있는데요제가 Pun2를 사용해서 게임을 만들어보려고하는데요..pun2에서 지원하는 콜백을 네트워크 매니저에 붙일려고 하는데요다른 매니저처럼 managers에다가 프로퍼티를 만들어서 접근하는식으로 만들었구요.. using UnityEngine;using Photon.Pun;public class NetworkManager: MonoBehaviourPunCallbacks{ public override void OnConnectedToMaster() { Debug.Log("complete masterserver connect"); }}일단 테스트를 위해서 서버에 접속이되면 저 콜백이 작동을 하는지 테스트를 해봤거든요..근데 작동을 안하더라구요..기존 매니저들은 콜백방식은 아니었고 직접 호출하는 방식이었는데저런식으로 콜백방식을 연동하려면 어떻게 하야할까요? 참고로 저걸 네트워크 매니저에 할당했을때는 안됐고 따로 게임오브젝트에서 서버접속을하는 코드를 따로 만들어서 접속시도했을때는 성공했습니다. 네트워크 매니저를 사용한방식에서는 로그조차 안뜨더라구요..
- 미해결[C#과 유니티로 만드는 MMORPG 게임 개발 시리즈] Part3: 유니티 엔진
강의 일자로부터 꽤 지난거로 보이는데 그대로 수강해도 좋을까요?
이미 결제도 했고 초반부분 듣고있긴 한데 2019년인가 업로드 한거로 보여서요 공부하는데는 지장없는걸까요?
- 미해결[C#과 유니티로 만드는 MMORPG 게임 개발 시리즈] Part3: 유니티 엔진
Player가 Monster를 타고 올라가는 이유는?
이전 질문을 검색하다 보니 hit.point가 몬스터를 클릭할 때 Y값이 1 이상으로 되면서 Player가 쓰러진다는 내용을 보고 코드를 아래와 같이 수정했더니 Playe가 쓰러지지 않았습니다.플레이어는 Use Gravity Off/ isTrigger On으로 된 상태입니다. 그런데 강사님이 공유해주신 코드를 비교해보면 y값을 잡아주지 않은 상태에서 몬스터 클릭시 hit.point의 y값이 1 이상이 되어도 Player가 몬스터를 타고 올라가지 않고, 넘어지지도 않습니다. _destPos의 Y값이 1 이상인데, Player가 움직일때 Y값을 0을 유지하는 설정, 코드가 있는 걸까요?
- 미해결[C#과 유니티로 만드는 MMORPG 게임 개발 시리즈] Part3: 유니티 엔진
Player의 State가 Moving 상태일 때 몬스터 옆으로 가면 Collider가 사선으로 기우는 이유는?
13강 MiniRPG를 만들면서 보면Player가 Monster의 주변을 클릭하면 공격하지 않고 이동하는 경우가 있습니다. (Raycast가 monster에 맞지 않고 근처 땅에 맞은 경우라고 생각하고 있습니다.) 그때 Player가 사선으로 기우는 경우가 생깁니다. Player의 Rigidbody.Constraints.FreezeRotation을 x, y, z를 모두 체크해도 Player가 사선으로 기울게 됩니다. Q1. 왜 Player가 사선으로 기울게 되는지 알 수 있을까요?그런데 언젠가 부터 원기둥(캡슐 콜라이더는 아닌듯한)이 생겨있어요. 이 원기둥 때문에 사선이여도 뒤로 넘어지지 않는것 같은데, 이 Q2. 원기둥이 뭘까요?Monster(Moving 상태)와 Player(Moving 상태)의 콜라이더를 비교한 샷도 같이 올립니다.Player가 공격 기능을 넣을때부터 계속 나온 이슈인데, 해결이 되지 않고 있습니다. 설명 부탁드립니다.13강 MiniRPG를 만들면서 보면Player가 Monster의 주변을 클릭하면 공격하지 않고 이동하는 경우가 있습니다. (Raycast가 monster에 맞지 않고 근처 땅에 맞은 경우라고 생각하고 있습니다.) 그때 Player가 사선으로 기우는 경우가 생깁니다. Player의 Rigidbody.Constraints.FreezeRotation을 x, y, z를 모두 체크해도 Player가 사선으로 기울게 됩니다. Q1. 왜 Player가 사선으로 기울게 되는지 알 수 있을까요?그런데 언젠가 부터 원기둥(캡슐 콜라이더는 아닌듯한)이 생겨있어요. 이 원기둥 때문에 사선이여도 뒤로 넘어지지 않는것 같은데, 이 Q2. 원기둥이 뭘까요?Monster(Moving 상태)와 Player(Moving 상태)의 콜라이더를 비교한 샷도 같이 올립니다.Player가 공격 기능을 넣을때부터 계속 나온 이슈인데, 해결이 되지 않고 있습니다. 설명 부탁드립니다. (혹시나 해서 관련샷 추가합니다.)
- 미해결[C#과 유니티로 만드는 MMORPG 게임 개발 시리즈] Part3: 유니티 엔진
git으로 협업할 때 conflict 발생
java 협업시 git을 써 보다가 유니티 작업을 git으로 협업을 하려고 하니 어려운 점이 있는데 도움 부탁드립니다. git으로 clone해서 작업하고 머지할 때 동일한 씬을 수정한 경우 컨플릭이 많이 발생합니다. 씬의 경우 컨플릭이 발생해도 사람이 작성한 코드가 아니다 보니 컨플릭을 해결하기가 어렵습니다. 씬 컨플릭이 발생하지 않게 git을 사용하는 방법이 있을까요?
- 미해결[C#과 유니티로 만드는 MMORPG 게임 개발 시리즈] Part3: 유니티 엔진
모델 Rig 타입은 어떻게 확인할수있나요?
강의에서 사용하시는 모델이 ㅇ없어서 다른 모델을 다운받았는데 애니메이션이 안먹히네요. 휴머노이드로 검색해서 다른걸로 한번 더 받아서 해도 먹통이고 유니티쟝을 갖다넣으면 되긴하는데..1. rig이 다른 경우 말고 또 어떤 경우에 호환이 되지 않는건가요?? 제가 받은 모델의 rig타입을 체크할 수 있는 방법이 있을까요? 구글님은 fbx??파일 확인하라는데 그런 파일은 없어요..ㅠㅠ