편집하다:
이 질문에 대한 @Bluescrn의 답변을 참조하십시오. 그는 움직임 벡터 나 위치가 아닌 재생 제어의 약점에 대해 자세히 설명합니다.
-
당신은 올바른 길을 가고 있습니다. 내가 사용할 접근법은 다음과 같습니다.
컨트롤러
키보드 입력을 받아서 캐릭터에게 전달하는 Controller 클래스를 만듭니다. 그러나 중요한 키 (예 : 화살표, 점프 등)를 눌렀을 때와 눌렀을 때를 정확히 기록한 컨트롤러 레코드도 있어야합니다. 다음과 같은 정보를 저장합니다.
actions[0].milliseconds = 400 actions[0].action = right pressed
actions[1].milliseconds = 1000 actions[1].action = jump pressed
actions[2].milliseconds = 1300 actions[2].action = jump released
actions[3].milliseconds = 2500 actions[3].action = jump pressed
actions[4].milliseconds = 3000 actions[4].action = jump released
actions[5].milliseconds = 5330 actions[5].action = right released
컨트롤러에는 두 가지 모드가 있습니다.
- 레코드 : 키보드 입력을받습니다. 목록에 입력을 기록합니다. 키보드 상태에 따라 문자 입력을 전달합니다.
- 재생 : 키보드 입력을 무시합니다. 레벨이 시작된 후 경과 된 밀리 초에 따라 목록을 진행합니다. 현재 순간에 기록 된 키보드 상태에 따라 문자 입력을 전달합니다.
캐릭터
Character 객체가 생성되면 자체적으로 새로운 컨트롤러를 만듭니다. 캐릭터는 언제든지 두 가지 모드 중 하나 일 수 있습니다.
- 활성화 : 활성화 된 캐릭터는 하나 뿐이며 사용자가 제어하는 캐릭터입니다. 캐릭터가 활성 모드에 있으면 해당 컨트롤러가 녹음 모드에 있습니다. 기본적 으로 캐릭터가 구성되면 활성 모드입니다.
- 고스트 : 이것은 당신의 과거 행동을 재현하는 것입니다. 캐릭터가 고스트 모드에 들어가면 캐릭터의 모양이 바뀌고 컨트롤러가 재생 모드로 설정됩니다.
레벨
새로 시작한 레벨
레벨을 시작할 때 단일 캐릭터를 만듭니다. 이제 레벨이 시작되고 플레이어는 자신의 일을합니다.
시간이 재설정 될 때
레벨이 재설정되면 다음 세 가지를 수행하십시오.
- 현재 활성 캐릭터에게 고스트 모드로 들어가도록합니다.
- 새로운 캐릭터를 만듭니다.
- 모든 문자를 불러 자신을 초기화하십시오. 이렇게하면 움직이지 않고 시작 위치에 다시 배치됩니다. 키를 누르지 않아도 컨트롤러에 밀리 초 0으로 재설정하도록 지시합니다.
그런 다음 레벨이 시작되고 플레이어는 자신의 일을합니다.