2013-02-12 1 views
0

최근에 RPG를 처음부터 만들었지 만 예상대로 움직임이 매우 고르지 있습니다. 왜냐하면 각 부분의 크기가 50 픽셀이고 문자 하나가있는 15x15 격자의 지형을 본질적으로 움직이기 때문입니다. 좌표는 좌표를 변경하고 지형을 재정렬하고 프레임을 새로 고침하여 이동을 촉진합니다. 내가하는 일의 예는 여기에 있습니다 : 나는 단순히 50 개 픽셀을 통해 이미지를 이동하고 있기 때문에Java RPG 게임에서 어떻게 동작 전환을 부드럽게 할 수 있습니까?

for(int i = 0; i<15; i++) 
{ 
    for(int j = 0; j<15; j++) 
    { 

     g.drawImage(imageOfGrass, i*50, j*50, 50, 50, this); 
    } 
} 

물론, 격자 사이의 스위치가 모두 원활하지 않습니다. 내 게임과 유사하게, 사전 Nintendo DS Pokemon과 Zelda 게임이 마음에 듭니다.

내 질문에이 다음에 또 다른 사소한 질문이 있습니다 (허용 할 경우) : 1. Java에서 이미지를 슬라이드 할 수있는 (다소) 간단한 솔루션이 있습니까?

GIF가 애니메이션을 끝낼 때까지 아바타가 여전히 그리드에있는 동안 실제로 움직이는 캐릭터를 표시하는 애니메이션 GIF를 만들려고했습니다. 그래도 나는 새로 고침에서이 문제로 인해 약간의 고파 성이 예상됩니다.

  1. 완전히 기능을 갖춘 RPG 게임을 만들고 싶다면 어디에서 시작해야합니까?

연구하는 동안 기사가 너무 단순한 것으로 나타났습니다 ("여기 프레임 워크가 있습니다.")거나 너무 복잡합니다 ("필수 조건은 ...."). 그 범위의 게임을 만드는 것이 간단하지 않고 시간이 걸릴 것이라는 것을 이해하지만, 나는 배우고 싶습니다. 그런 의미에서, 제 목표는 완성 된 프로젝트를 만드는 것이 아니라 코드와 프로그래밍을 배우는 것입니다. 이상적으로, 저는 기존 프레임 워크에서 언어를 배우고 싶습니다. 그런 다음 계속해서 고유 한 고유 한 게임을 만들 수 있습니다. 현재 나는 중학교 1 학년이며 내 성적의 결과로 내년에 수업 수가 줄어들므로, 너무 야심적이지는 않지만 이번에는 사용할 수 있고 내 자신의 달리기 (반드시 완료하지는 않음) 게임을 가질 수 있기를 바랍니다. 내년 여름.

나는 텍스트의 길이를 사과하며, 시간 내 주셔서 감사합니다.

+0

* "1. 이미지를 슬라이드 할 수있는 (다소) 간단한 솔루션이 있습니까? *"- 아니요. [이 답변] (http://stackoverflow.com/questions/14789107/how-to-make -이 자바 애니메이션 - 부드러운/14796414 # 14796414)는 실제 값 (주어진 움직임에서)이 시간의 백분율 인 시작 시간 값을 목표 값으로 변경하는 간단한 애니메이션 엔진을 가지고 있습니다 ... – MadProgrammer

+0

Please tagwiki를 읽지 않으면 stackoverflow에서 RPG 태그를 사용하지 마십시오. – WarrenT

답변

1

색인을 증가 시키면 이미지가 '슬라이드'됩니다.

을 경고하는 바이다 : 사실적인 물체로

컴퓨터 프로그래밍 물리학 기반으로합니다. 거의 모든 것이 시간의 함수로 간주되어야합니다. 1 그리드 타일에서 다른 그리드 타일로 이동하는 데 500 밀리 초가 걸리고 200 밀리 초가 지나면 길의 40 %에 불과합니다. 질문의

하반기 :

난 항상 위젯 시작합니다. 쉬운 작업이며 게임의 기능 대부분을 설정하고 거의 대부분 자주 사용하게 될 것입니다. 거기서, 스프라이트와 행동 모델에 대해 작업하십시오. 그런 다음 퀘스트, 대화 및 영화와 같은 하드 코딩 된 부품 작업을 시작하십시오. 그 후 오디오 파일을 만듭니다. 그런 다음 합법성을 분류하고 사이트를 만들어야합니다.

+0

고맙습니다. 나는 그것에 대해 생각하지 않았습니다. Thread.sleep()은 UI 내에서 작동하지 않을 것입니다. 스윙 타이머가 작동합니까? –

+0

변경을 확인하는 방법으로 델타 시간을 사용합니다. –

+0

아 ... 그건 내가 설정 한 타이머의 듀오보다 훨씬 논리적 인 것처럼 보입니다. 고마워, 나는 미끄럼 효과를 얻을 수 있었다. 모두 올바르게 동기화됩니다. –

0

정상적으로 부드럽게 애니메이션을 만드는 일반적인 방법은 화면을 버퍼로 다시 그려 넣은 다음 해당 버퍼를 단일 그리기 작업으로 화면에 표시하는 것입니다.

OpenGL과 같은 프레임 워크는 화면 버퍼와 화면 상 버퍼가있는 곳에서 더블 버퍼링을 지원합니다.

하지만 개념은 매우 간단합니다. 모든 스프라이트를 한 이미지로 그릴 수 있고 지우기 작업 (깜박임을 유발 함)없이 이전 프레임의 맨 위에 그 이미지를 그립니다. 이미 상당한 진전을 보았습니다.

[편집] 나는이 프로젝트에 얼마나 너가 과장되어있는 것 같다. 귀하의 질문에 대한 기존 답변을 읽으면 나는 그 요점을 놓친 것 같습니다. 부분적 진보를 고려하지 않았습니다. 당신이 그것을 분류 한 후에, 당신이 당신의 스크린이 많이 깜박 거리는 것을 발견한다면, 나의 대답을 고려해 보라.

+0

매우, 매우 과대 평가되었습니다. 나는 Java 경험이 반년이며, 게임 내 모든 것이 스윙과 awt에서 온 것입니다. 그러나 나는 처음부터 자랑스럽게 모든 것을 코드했습니다. 이것은 몇 달 전에 나의 텍스트 체스 게임을 자랑스러워한다는 것을 생각하면 커다란 업적입니다. . 즉, 긴 단락의 습관에서 벗어나면 답변 해 주셔서 감사합니다. –

+0

문제 없으며 즐겁게 코딩하십시오! – paddy

+0

API와 BufferedImage에 대한 강의를 읽은 후 본질적으로 일반 이미지처럼 작동 할 수 있다는 것을 모았습니다. 이 기능을 사용하면 깜박임이 줄어 듭니다 (슬라이딩 작업을 할 수있었습니다). 버퍼링과 관련하여 완전히 다른 것입니까? –

관련 문제