我一直在通过制作一个太空入侵者克隆来锻炼我的技能。两天前我问了一个问题,这个问题已经解决了,我取得了很大的进步。我已经设法让一切正常工作,拼接,声音,游戏资产管理和移动等
除了入侵者只能从我的数组中的索引0(最左边的入侵者)在每一行进行射击之外,一切都很正常。代码位于从game1.cs的第344行开始的区域中。
入侵者也移动得很好。它们击中屏幕的边缘并向下移动像素,然后继续向相反的方向移动。然而,如果我摧毁最外面的入侵者,游戏仍然会识别死亡的入侵者。
因此,游戏突然告诉屏幕中央的入侵者向下,并向相反的方向。它让游戏更有动感,但这不是我想要的效果。用于移动的代码位于同一位置,从game1.cs中的第344行开始
源代码可以从这里下载:http://db.tt/1AodUfdS
发布于 2012-04-04 03:33:25
在大多数情况下,第一个入侵者射击的原因是您每次都创建一个新的Random对象。这将使用系统时间进行初始化。因此,在循环中,大多数随机数都是相等的(因为系统时间几乎相等)。取而代之的是在游戏开始时创建一个随机对象。
对于第二个问题:您总是使用第一个(索引0)和最后一个(索引10)侵入者来确定行是否应该改变方向。相反,请使用可见的第一个/最后一个入侵者:
var LeftMost = Type1Invaders.Where(i => i.invaderVis).FirstOrDefault();
var RightMost = Type1Invaders.Where(i => i.invaderVis).LastOrDefault();
有了这些,你就可以继续你的测试。如果结果为null,则该行为空。
https://stackoverflow.com/questions/9999941
复制相似问题