ObjectManager

starkshn·2022년 5월 14일
0

2D_Project

목록 보기
10/23
post-thumbnail

null체크

사소한 부분에서 에러 나서 시간많이 걸림


오늘은 몬스터랑 플레이어간의 충돌 해볼 것이다.

그래서 몬스터 컨트롤러에 이렇게 초기화를 해준다.

그리고 서버는 모든것을 아이디를 부여를 해서 동작하고

다른 클라들한테 알려주기 때문에

ObjectManager가 있으면 이것들을 관리를 하기 쉬워지니

필요할 것이다.

ObjectManager

이렇게 아주 간단하게 구현이 일단 되었고

이제 특정좌표에 _objects가 있다고 했을 때

충돌을 어떤 좌표에 어떤 오브젝트가 있는지 아닌지를 어떻게 판별해 줄 수 있을 까..??

먼저 게임 오브젝트 이중 리스트를 만들어서

여기서 같이 관리를 해줄 수 있을 것이다.

그런데 이렇게 하면

오브젝트 매니져에서 또 따로 갱신을 해주어야 하고 -> 조금 복잡해 질 수있다.

그래서 오브젝트가 얼마 없을 경우에

무식한 방법이기는 하지만 List로 관리를 하면서

어마어마하게 느릴 수 있지만, Find로 찾는것도 막 엄청 나쁘지는 않다.

수업에서는 13번째 줄을 사용하는데 나는 그냥

CellPos라는 프로퍼티로 _cellPos를 읽도로만 하였고

이것을 이제

cc.CellPos로 읽은것을 인자로 받은 cellPos랑 비교를 하도록 하였다.

그런데 foreach로 하나씩 하나씩 스캔을 하기 떄문에 엄청 효과적인 방법이라고는 할 수는 없지먼

객체가 적다고하면은 클라 <-> 베이스 일 경우 큰 문제는 없다.

그래서 CanGo를 호출 하는 쪽에서

null체크를 해주어서 null이라면 물체가 없는 거니까

이렇게 해준다.

그리고 ObjectManager에서 Add, Remove사용할라면

지금 우리 Scene에 있는 객체들을

Prefab으로 만들어서 Scene에서 로드 하는 방법으로 해주어야

등록 == Add가 가능 해 질 것이다.

GameScene

이녀석은 선봉대장이다.

지금은 여기서 로드를 할 것이지만

나중에 서버가 붙으면 서버의 패킷을 받아서

패킷을 받은 Handler부분에서 실제로 생성을 하면 된다.

그리고 이까지 해준다음에 테스트 ㄱㄱ

잘된다.

그리고

UpdateMoving? 부분에서

물체 충돌 일어났을 때 애니매이션이 동작하지 않기 때문에 == if문에 안 걸리기 때문에

State = Creature.Moving 부분을 밖으로 빼주고 끝내도록 하겠다.

profile
혼자 학습하기 위한 공간.

0개의 댓글