inflearn logo
강의

강의

N
챌린지

챌린지

멘토링

멘토링

N
클립

클립

로드맵

로드맵

지식공유

[C#과 유니티로 만드는 MMORPG 게임 개발 시리즈] Part7: MMO 컨텐츠 구현 (Unity + C# 서버 연동 기초)

JobQueue

26분 14초 부분에 ApplyLeave(gameObject)는 가능여부 체크후 실행하는 것이 좋을 것같습니다!

218

댕진형

작성한 질문수 6

1

안녕하세요, 선생님.

애청하는 학생 중하나입니다.

다시한번 정주행중인데.. 수정하였으면 하는 부분이 하나 생겨 문의를 드려봅니다. 아래 부분에서

ApplyLeave(gameObject); 목적지에 갈수 있는지 체크한 이후에 넣는게 맞지 않나 생각이듭니다!

- 몬스터가 플레이어를 쫓다가 막혔을때 (물론 막히면 다른데로 갈수도있으나 그러지 않은 상황이 지금단계에서는 생기더라구요. )

ApplyLeave는 계속 하고 있으나, return이 되어 게임상 _object list에는 저장이 되지 않고 있는 상황이 생겨서용..

별거 아니지만.. 테스트중 오류가 발견되어 코멘트 남겨봅니다! 늘 감사하게 강의 듣고있습니다. 감사합니다.

=> AS-IS

public bool ApplyMove(GameObject gameObject, Vector2Int dest)

            {

                ApplyLeave(gameObject);



                // 예외를 처리한다.

                if (gameObject.Room == null)

                    return false;

                if (gameObject.Room.Map != this)

                    return false;

               // 목적지에 갈 수 있는지 체크
                if (CanGo(dest, true) == false)
                    return false;
      PositionInfo posInfo = gameObject.Info.PosInfo;

                // 목적지에 나를 텔레포트 시킴
                {
                    int x = dest.x - MinX;
                    int y = MaxY - dest.y;
                    _objects[y, x] = gameObject;
                }

=> TO-BE

 public bool ApplyMove(GameObject gameObject, Vector2Int dest)
            {

                // 예외를 처리한다.
                if (gameObject.Room == null)
                    return false;
                if (gameObject.Room.Map != this)
                    return false;

                // 목적지에 갈 수 있는지 체크
                if (CanGo(dest, true) == false)
                    return false;

                // (순서조정) 나의 위치 체크와, 공간에서 사라지게 하고 하는게 다 ApplyLeave에 들어가있다.
                ApplyLeave(gameObject);
                
                PositionInfo posInfo = gameObject.Info.PosInfo;

                // 목적지에 나를 텔레포트 시킴
                {
                    int x = dest.x - MinX;
                    int y = MaxY - dest.y;
                    _objects[y, x] = gameObject;
                }

                // 실제 좌표 이동 | 사실 왜 바꿔주는지는 아직 모르겠음 return도 안하는데
                posInfo.PosX = dest.x;
                posInfo.PosY = dest.y;

                return true;
            }

unity C#

답변 1

1

Rookiss

좋은 판단을 하신 것 같네요.
컨텐츠 코드는 과감하게 막 수정하셔도 무방합니다.

Lessons 3 & 4 don't have subtitles unfortunately

0

39

1

MessagePack

0

106

1

본인 플레이어 이동 관련 질문

0

69

1

Part7 Part9 질문이 있습니다.

0

90

1

.

0

131

1

.

-1

120

2

게임 로직 루프에서 게임 틱 누락으로 인한 높은 CPU 사용 문제

0

104

1

타일 팔레트 깔았는데도 안돼요

0

150

2

2D로 그냥 만들어도 되나요?

0

95

2

지난 강의와 이어지는게 맞을까요?

0

96

2

순환참조 문제로 인해 발생하는 문제는 없을까요?

0

168

2

유니티 클라와 C++서버연동

0

291

2

멀티플레이 테스트 환경 관련 질문입니다

0

227

3

강의 후반부에 순서 동기화를 위해 잡큐를 사용 안 한 부분 질문입니다!

0

164

2

코드 관련한 몇 가지 질문입니다!

0

168

2

3d 프로젝트 이동 동기화 관련

0

345

4

파트 7 스트레스 테스트 질문 드립니다.

1

205

2

맵 이동 방식

0

145

0

맵 이동 관련해서 질문드립니다.

0

97

1

안녕하세요 도저히 알 수 없는 오류가 나와서 질문드려요,,

0

224

2

안녕하세요. 일전에 질문 드린 포폴 준비 관련 질문의 추가 질문입니다!

0

173

1

[팁] 2024년 기준 버전 이슈?

0

470

1

SendBuffer.cs 삭제 후 대체 되는 부분의 장단점?

1

213

1

지금 강의의 유니티 클라를 IOCP 서버와 연동하는 것

0

343

2