1

我有一个动画(见下面的视频链接),它是我正在开发的应用程序的一部分。我基本上让鱼在屏幕上游来游去。目前,我有一组大约 20 条鱼,每条鱼最初一个接一个地排列,然后按顺序“游”过屏幕。我的问题是,这不是我想要的行为。这只是一个临时的解决方法。相反,我需要发生的是,在每条鱼达到某个阈值后(假设小于画布宽度的最后 1/5),随机选择阵列中的另一条鱼,定位,然后游过去。

这应该在活动的整个生命周期内重复。我尝试在每条鱼到达该点后生成一个随机数,然后使用它将鱼定位在该索引处,然后将其浮动,但一个明显的问题是,如果选择的随机数对应于一条鱼的索引已经在画布上..它将消失(以便可以再次重新定位,等等)。除了这个问题,根据我对游戏开发的理解。到目前为止(我仍然是一个初学者)..应该不惜一切代价避免主游戏循环中的随机数生成。但我只是不确定有什么其他方法可以解决这个问题。希望从更有经验的开发人员那里获得一些关于方法的见解。多谢你们。这是我为这个问题发布的 YouTube 视频的链接

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

TL;DR - 我希望一群鱼以随机顺序游过尖叫声,并重复此过程,直到用户退出活动/应用程序。

4

2 回答 2

1

如果鱼之间的间距在应用程序的生命周期内保持不变,则可以在应用程序启动时生成随机的鱼间偏移。第一个先游进去……当它到达随机偏移#1 时,鱼#2 进入。当鱼#2 到达随机偏移量#2 时,鱼#3 进入,依此类推。当一条鱼离开屏幕的另一边时,它会回到队列中等待进入。

于 2012-09-01T05:38:46.983 回答
1

你不是在游戏循环的每一帧都这样做,所以任何性能都是微不足道的。

至于这样做的方法:我会说,制作一个List<Integer>并用你拥有的鱼的索引填充它。

当一条鱼被放置在屏幕上时,remove它会从列表中。

当要选择一条新鱼时,从 0 到列表长度随机选择。

当一条新鱼游出屏幕时,add它会回到列表中。

于 2012-09-01T06:10:27.430 回答