강의

멘토링

로드맵

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

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

작성한 질문수

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

레벨업

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

작성

·

249

0

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

퀴즈

Unity 게임 개발 프레임워크에서 Manager를 사용하는 주된 목적은 무엇일까요?

특정 오브젝트의 애니메이션을 제어하기 위해서

자주 사용되는 기능이나 시스템을 중앙에서 관리하기 위해서

캐릭터의 스탯 값을 저장하기 위해서

게임 씬의 배경 음악을 재생하기 위해서

답변 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를 반환한 것 같습니다.

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

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

작성한 질문수

질문하기