2013-03-14 2 views
1

나는 안드로이드 용으로 작성한 게임을 리 어셈블 중입니다. 기초를 배우기 위해 간단한 캔버스로 작성되었습니다. 더 높은 수준으로 가려면 libgdx의 도움으로 글을 쓸 것입니다. 이렇게하려면 stage에 대해 생각하면 Actors (괴물, 스킬이 활성화되어 있고 문자가 있다면 그럴 수 있음)을 추가하십시오. 나는 이것이 2D 게임을 확신하는 좋은 방법이라고 읽었다.libgdx 스레딩 및 스프라이트 이동을위한 일반적인 질문

몇 가지 정보가 더 있습니다. 사각형 시스템을 기반으로하는 2D RPG입니다. 모든 단계는 다음 사각형으로 한 번 이동하는 것입니다 (타일 기반의 lateron 일 수도 있습니다. 배경은 한 장의 그림입니다).

이전 버전에서는 모든 몬스터에 스레드를 사용 했으므로 "원하는대로 처리하고 반응 할 수 있습니다 ". libgdx에서도 가능합니까? 아니면 다른 방식으로 처리해야합니까?

문자를 한 칸에서 다음 사각형으로 이동하려면 계산 위치에 픽셀 위치를 변경하여 스프라이트를 한 칸에서 다음 칸으로 옮긴 계산 시간이 있습니다. libgdx에서 init로 사각형이있는 카메라를 갖게 될 것입니다. 그래서 (40f, 30f) 예를 들어. 내가 이전 게임에서했던 것처럼 thread의 캐릭터를 움직이게 할 수 있습니까? 그래서 저는 한 사각형에서 다음 사각형으로 500ms가 걸리므로 50ms마다 ppuX가 + 0.1f가 될 필요가 있음을 알았습니다. 나는 그것에 따라 스프라이트도 업데이트했다. 따라서 속도가 빠르게되면 스프라이트가 빠르게 변경됩니다.

나는 또한 그런 식으로 기술을 프로그래밍했습니다. 예를 들어 불 덩어리는 실이 무언가를 때릴 때까지 움직이는 그림입니다.

"프로토 타입"의 그림을 참조하십시오. LibGdx에서

답변

3

아마 가능하지만, 개체 당 스레드를 할당하는 것은 아주 나쁜 생각이다 - 그렇게 나쁘지 사실, 그것은 해당 TheDailyWTF 항목을 가지고 : 불필요

http://thedailywtf.com/Articles/Sprite_Threading.aspx

뿐만 아니라 당신이 소비하는 자원을 이 접근 방식에서는 장기적으로 당신의 정신을 위태롭게합니다. 의견과 함께 링크 된 항목이 왜 그런지에 대해 철저히 설명합니다.

일반적으로 libgdx는 ApplicationListener 클래스 (특히 render() 메소드)를 통해 "주 루프"모델을 지원합니다. 시작하려면 There is a number of tutorials, including one for Android.

나는이 접근법이 처음에는 더 제한적으로 보일 수도 있지만 훨씬 더 안정적인 코드를 허용한다는 것을 알고있다.

+0

나는 그 튜토리얼을 알고 있지만 어떻게하면 첫 단계로 내 괴물이 다음 단계를 계산할 수 있는지 궁금해. 그의 움직임이 완료되면 그 렌더링에서 단순히 미적분을 실행할 수 있습니까? 그래서 나는 항상 다음 블록에서 hes가 설정된 boolean "movedone"을 체크한다.이동 한 경우 다음 단계를 계산합니까? 'stage.act()'에있는 그 스레드의 모든 것? – BennX

+1

나는 당신을 이해할 수 있을지 확신하지 못한다. (답을 다시 말하면 답을 다시 말하십시오.)하지만 당신의 질문은 몬스터 (엔티티)가 그들이 움직여야한다는 것을 "알게"하는 방법에 관한 질문이라고 생각합니다. 자, 하나의 쓰레드로 실행되기 때문에'moveDone' 플래그를 가질 필요가 없습니다 - 몬스터가 움직이거나 중개되지 않습니다. 예 : 'render' 메쏘드에서 한 블럭 안에있는 모든 몬스터들을 움직 인 다음 추가 로직을 수행하십시오. 이 질문에 대한 대답이 있습니까? –

+0

다소 차이가 있습니다. 저는 정사각형 시스템을 가지고 있으며 항상 다음 움직임을 계산하기를 원합니다. 그래서 그들이 광장에 있다면 (이동을 마쳤습니다) 나는 다음 최고의 사각형을 계산하려고합니다. 나중에 좋은 KI 알고리즘을 사용하더라도 마찬가지입니다. – BennX

1

Picture of the prototype with canvasGame 클래스의 렌더링() 방법은 지속적으로 호출됩니다. 이 방법으로 네 가지를 할 수 있습니다.

1) 프로세스 입력
2) 업데이트 스프라이트/배우
3) 충돌
4 확인) 세계 당신은 게임 움직이는 물체에 대한 별도의 스레드를 만들 필요가 없습니다

을 렌더링합니다.