인프런 커뮤니티 질문&답변

이성우님의 프로필 이미지
이성우

작성한 질문수

[C#과 유니티로 만드는 MMORPG 게임 개발 시리즈] Part3: 유니티 엔진

레벨업

나이트가 계속 자기를 때리는 문제

작성

·

179

0

강의에서 이부분을 아래와 같이 바꾸면 생기는 문제네요
GameObject.FindGameObjectWithTag("Player");
->
GameObject player = Managers.Game.GetPlayer();
 
해당코드에서 나이트가 플레이어를 인식한게 아니라 자기를 인식해서 생기는 문제로 보입니다.
 
참고로 나이트의 태그는 Untagged로 되어 있습니다.
 
아직 해결 방법은 못찾았는데, 밑에 분들도 동일한 문제가 발생한 거 보니 뭔가..강의에서 생략된 부분이 있는것 같은데 좀 더 찾아봐야 겠습니다.

답변 3

1

이성우님의 프로필 이미지
이성우
질문자

나이트가 자기를 때리는 이유 찾았습니다.

아마 복사 붙여넣기 하다가 잘못한것 같은데요..

일단 GameScene.cs 과 SpawningPool.cs 에

Managers.Game.Spawn(Define.WorldObject.Monster, "Knight")

코드로 몬스터, 즉 나이트 오브젝트를 가져오는 코드가 있습니다.

저같은 경우 이부분이 아래와 같이 되어 있었습니다.

Managers.Game.Spawn(Define.WorldObject.Player, "Knight")

Monster인데 Player로 되어 있었던 거죠. 이러니 나이트가 자꾸 자기학대를 했던 거구요

혹시나 이 강의를 들으시는 분들께 도움이 될까 싶어 댓글 남겨둡니다.

 

 

0

Rookiss님의 프로필 이미지
Rookiss
지식공유자

ㅎㅎㅎ 수고하셨습니다.
이렇게 버그를 찾는 연습을 꾸준히 하다 보면,
언젠가는 30초 내로 빠르게 찾을 수 있게 될겁니다 :)

이성우님의 프로필 이미지
이성우
질문자

네, ㅎㅎ 응원 감사합니다~!

0

Rookiss님의 프로필 이미지
Rookiss
지식공유자

FindGameObjectWithTag가 잘못된 태그를 찾아준 모양인데
정확한 이유는 위 내용만으로는 알 수가 없네요! 

이성우님의 프로필 이미지
이성우
질문자

안녕하세요

findgameobjectwithtag 는 잘 동작합니다. 이부분이 강의에서 managers.game.getplayer() 로 바뀌는데요

바뀐코드로 적용할때 나이트가 자기를 때리는 현상이 나타납니다

이성우님의 프로필 이미지
이성우
질문자

댓글로 계속 남깁니다.

public GameObject GetPlayer() { Debug.Log(_player.name); return _player; }

GetPlayer() 하는 부분에 _player의 name을 찍어봤습니다.

Knight 가 찍히네요. 원래대로라면 플레이어의 네임이 찍혀야 되는데...

지금 상태가 MonsterController에서 GetPlayer 하니까 Knight를 반환한 것 같습니다.

코드가 의도대로 동작을 안한건데..이부분은 좀 더 살펴봐야 겠습니다.

이성우님의 프로필 이미지
이성우

작성한 질문수

질문하기