2012-09-01 2 views
1

저는 작업중인 앱의 일부인 애니메이션 (아래 비디오 링크 참조)을 가지고 있습니다. 기본적으로 물고기는 화면을 가로 질러 수영합니다. 현재 나는 처음에는 각각 20 마리 정도의 물고기를 배열 한 다음 화면을 가로 질러 순서대로 수영합니다. 제 문제는 제가 원하는 행동이 아니라는 겁니다. 이는 일시적인 해결 방법 일뿐입니다. 대신에 각 물고기가 특정 임계 값 (캔버스 너비의 1/5 이하라고 가정 해 봅시다)에 도달 한 후 배열의 다른 물고기가 무작위로 선택되고 배치 된 다음 가로 질러 헤엄 치는 것입니다.메인 게임 루프에서 애니메이션을 랜덤 화하는 방법

활동의 전체 수명 동안 반복해야합니다. 각 물고기가 그 지점에 도달하면 난수 생성을 시도했다. 그런 다음 물고기를 그 지수에 위치시킨 다음 그것을 가로 지르는 데 사용했다.하지만 선택되는 임의의 숫자가 물고기의 색인에 해당하는 경우 명백한 문제가된다. 캔버스에 이미 있습니다. 사라집니다 (다시 위치를 조정할 수 있도록). 그 문제를 제외하고, 게임 개발에 대한 나의 이해에서. 지금까지 (나는 아직 초심자 다.) 메인 게임 루프 내의 난수 생성은 모든 비용으로 피해야한다. 그러나 나는 이것에 관해 갈 다른 방법의 확실하지 않다. 더 숙련 된 개발자의 접근 방식에 대한 통찰력을 얻기를 바랍니다. 고마워. 여기에 내가

https://www.youtube.com/watch?v=QM6t6f9TaUQ&feature=youtube_gdata_player

TL이 질문에 대한 게시 YouTube 동영상에 대한 링크입니다; DR은 - 사용자가를 종료 때까지 임의의 순서로 비명을 헤엄 쳐 건너,이 과정의 반복을 가지고 물고기의 무리를 원한다 활동/앱.

답변

1

물고기의 간격이 앱의 수명 동안 일정하게 유지되는 경우 응용 프로그램 시작시 임의의 물고기 간 오프셋을 생성하면됩니다. 첫 번째 수영은 ... 무작위 오프셋 # 1에 도달하면 물고기 # 2가 들어갑니다. 물고기 # 2가 임의의 오프셋 # 2에 도달하면 물고기 # 3이 들어가고, 계속 반복됩니다. 물고기가 화면의 다른 쪽을 떠날 때, 그것은 줄에서 뒤로 가고, 들어가기를 기다린다.

1

게임 루프의 모든 프레임마다 이렇게하지 않으므로 어떤 성능도 중요하지 않습니다.

방법 : 나는 List<Integer>을 만들고 가지고있는 물고기의 색인으로 채우라고합니다.

물고기가 화면에 표시되면 목록에서 remove 물고기가 나옵니다.

새 물고기를 선택하려면 0부터 목록 길이까지 무작위로 선택하십시오.

새 물고기가 화면에서 벗어나면 add 다시 목록에 나타납니다.

+0

어디에서 임의의 int를 생성합니까? 내 게임 루프에서 각 물고기의 x 위치를 확인하고 있습니다. 그리고 한 번 각 점이 내가 임의로 선택할려고 노력하고 있습니다. 조금 명확하게 그 문제를 볼 수 있습니다. –

+0

정말 보이지 않습니다. 문제가 있습니까? 물고기가 특정 x 값을 통과하면 위의 논리를 수행하는 'SpawnFish'함수를 호출하십시오. 그것은 일정량의 물고기를 유지할 것입니다. 좀 더 자연스럽게 보이기를 원한다면 임의의 간격으로 물고기를 산란시킬 수 있으며 x 값을 통과 할 때만 물고기를 제거 할 수 있습니다. –

+0

네가하는 말을 보았다. 그것은 내가 논리적으로 여기에 어떻게 배치했는지의 종류입니다. 그러나 Fish.x가 캔버스 너비의 절반보다 작 으면 내 spawnFish()가 인덱스 목록에서 임의의 인덱스를 선택해야한다고 가정합시다. 각 물고기의 색상이 빠르게 변경된다는 이상한 행동을 보입니다. 나는 그것이 무작위 숫자 때문이라고 알고있다. 루프 내에서 세대를 생성하는 방법을 모르지만이 문제를 해결할 방법을 모르는 경우 –

관련 문제