나는 팩맨 게임을 사용하고 있으며, 다시 돌아가서 코드를 "정리"하려고합니다. 전에는 기본적으로 내 게임의 모든 객체 (팩맨, 유령,지도 등)를 참조하는 game1.cs의 객체를 참조하는 "TopObject"를 사용했습니다. 필자는 유령 물체 나 내 유령 물체의 맵/타일 오브젝트, 심지어 어디서든지 컨텐츠를로드 할 수있는 내 ContentMananger에서 Pacman 오브젝트에 액세스 할 수 있도록 전역 적으로 사용할 수있게 만들었습니다.팩맨 게임 조직 (XNA) - 유령/음식과의 충돌을 어디에서 확인해야합니까?
저는 이것이 나쁜 습관이라는 것을 알고 있습니다. 그래서 그것을 제거하려고합니다. 예를 들어, "ContentManager"유형을 사용하는 모든 객체에서 LoadContent() 메소드를 작성 했으므로 TopObject를 사용하여 ContentManager를 호출 할 필요가 없습니다.
계속 진행하면 내 모든 개체에 대한이 글로벌 참조가 없으면 작업을 수행하는 데 어려움을 겪고 있습니다. 예를 들어 : - 내 팩맨 업데이트() ..
내에서 난 내가 벽에 실행하는거야 알고 있어야합니다. 지도/타일에 대한 참조가 필요합니다.
유령과 충돌했는지 알아야하므로 유령 객체에 대한 참조가 필요합니다.
내가 음식과 충돌했는지를 알아야하고 스코어 보드를 업데이트해야하므로 스코어 보드 개체에 대한 참조가 필요합니다.
그래서 본질적으로, 그것은이 "글로벌"topobject을하는 것 같은 느낌이 든다 훨씬 청소기입니다, 내 모든 객체에 주위에 많은 객체 참조를 통과하는 거대한 엉망 될거야 같은 느낌.
누구든지이 기능을 구성하는 방법을 알고 있으므로 제대로 처리하고 있습니까? Pacman Update() 내에서 충돌 여부를 확인해야합니까, 아니면 별도의 "PacmanObject.CheckCollisionWith()"를 만들고 내 Game1 Update()에서 호출해야합니까? 충돌 논리가 새로운 클래스로 분리되어야 하는가?
감사합니다.
재미있는 읽을 거리이며, 이러한 유형의 문제에 접근하는 방법과 처음 실행시 작동하는 것처럼 보이는 일반적인 접근 방식이 잘못된 이유를 마음에 두는 데 도움이됩니다. http://gameprogrammingpatterns.com /하나씩 일어나는 것.html – JohnLBevan