포켓몬과 비슷하게 맨 아래로, RPG 형식의 게임을 만들고 있지만 캐릭터의 움직임에 고생하고 있습니다. 기본적으로, 내가 달성하고자하는 것은 맵에서 내 플레이어 및 다른 사람들을위한 부드러운 타일 기반의 이동 시스템입니다. 누구든지 효과적으로 이것을 할 수 있었습니까? 그렇다면 어떻게?XNA의 진보 된 RPG 스타일 이동
4
A
답변
8
포켓 몬스터와 같이 그리드 시스템을 사용하는 경우 타일 사이를 이동할 수있는 속도를 설정하여이를 수행 할 수 있습니다.
예를 들어, 한 타일을 1 초 움직일 수 있도록 만든 경우 Update
함수에서 (float)gameTime.ElapsedGameTime.TotalSeconds
을 사용하여 게임이 얼마나 빨리 업데이트되는지 확인할 수 있습니다. 이걸로 캐릭터가 각 업데이트 ((float)gameTime.ElapsedGameTime.TotalSeconds * TileSize)
을 움직일 수 있도록 만들어야합니다.
이것은 4 개의 업데이트가 1 초 (매우 느리지 만 예를 들어) 인 경우 매 업데이트마다 타일에 1/4의 거리를 이동하고 이동이 끝날 때 끝점에 도달한다는 것을 의미합니다 기간 (이 경우 1 초). 이 상황에서, 당신은 32 픽셀 타일을 가지고 있다면, 그들은 0.25 * 32
마다 업데이트, 또는 8 픽셀 이동합니다.
희망이 도움이됩니다.
2
원하는 '기술'단어는 '보간'입니다.
당신이하고 싶은 가장 간단한 것은 시작 시간 (타일 시작 중간)과 종료 시간 (중간 타일 끝) 사이의 단위 위치를 보간하는 것입니다. 부드러운 움직임.
공식은 이런 식입니다 : 게임에서
float k = timeSinceStarted/durationOfMovement;
pos.X = startPos.X + (endPos.X - startPos.X) * k;
pos.Y = startPos.Y + (endPos.Y - startPos.Y) * k;
, 그것은 델타를 미리 계산하고, 대신에 시작 위치를 저장하는 단위를 추가하는 아마 좋습니다. 이 같은 (참고 :이 계산을 두 번 확인하지 않았습니다).
delta = endPos - startPos;
position += delta * (timeSinceLastUpdate/durationOfMovement);
관련 문제
- 1. 더 유연하거나 진보 된 페이지 생성 3.2.1
- 2. 런타임시 XNA의 경로에서 텍스처를 어떻게로드합니까?
- 3. div 스타일 커서 이동 :
- 4. XNA의 회전
- 5. java.util.Properties보다 조금 더 진보 된 것을 제안 할 수 있습니까?
- 6. 1 인칭 카메라가있는 XNA의 질감 된 프리미티브
- 7. rpg 프로그램의 재귀 실행
- 8. RPG 캐릭터 제작 방법
- 9. XNA의 3D 모델 순서 지정
- 10. RPG 대화 엔진/구조
- 11. 조합 WPF + XNA의 장점은 무엇입니까?
- 12. XNA의 SkinnedModelProcessor을 재현하는 방법
- 13. AS400 RPG 시뮬레이터
- 14. PHP에서 RPG 프로그램 호출
- 15. AS400 RPG 호출 Java에서
- 16. XNA의 포토샵 블렌드 수학
- 17. XNA의 체스 로직
- 18. XNA의 댄스 패드
- 19. XNA의 원근 투영법 변환?
- 20. XNA의 타일 기반 충돌
- 21. XNA의 스크롤 화면
- 22. XNA의 단일 픽셀 색상
- 23. XNA의 중력 계산하기
- 24. XNA의 회전 큐브
- 25. 인라인 CSS를 외부 스타일 시트로 이동
- 26. xna의 텍스처를 다른 텍스처로 복사
- 27. XNA의 FBX에서 재질 매개 변수로드
- 28. 만료 된 항목 이동?
- 29. wp7 xna의 무작위 성능 고장?
- 30. 개요 rpg 바둑판 식 배열
현재 캐릭터를 어떻게 움직입니까? –