我正在制作一个垂直平台游戏。我一直放置平台的方式是通过列表: XNA:实体在列表中的位置
public void LoadPlatforms(ContentManager content, Mechanic_Levels mech, Clide clide)
{
platforms.Add(new Entity_Platform());
platforms.Add(new Entity_Platform());
platforms.Add(new Entity_Platform());
platforms.Add(new Entity_Platform());
platforms.Add(new Entity_Platform());
platforms.Add(new Entity_Platform());
platforms.Add(new Entity_Platform());
platforms.Add(new Entity_Platform());
platforms.Add(new Entity_Platform());
// factory.Add(new Entity_Factory());
foreach (Entity_Platform platform in platforms)
{
platform.position = new Vector2(rand.Next(20, 280), rand.Next(20, 580));
platform.currentlevel = rand.Next(12);
platform.LoadPlatform(content);
}
}
这适用于如果我想随机放置平台,但是如何设置它以便根据当前级别平台重新定位它们自己?我知道这可能意味着我不能使用列表。
你是什么意思的“重新定位自己”吗? “currentLevel”是做什么的? – musefan 2013-04-10 08:05:43
对不起,应该定义我的意思,但目前的水平。所以游戏的效果是,当你越过屏幕的顶部时,等级会上升一个。这是通过一个简单的基于整数的系统来处理的,其中平台的当前级别等于平台呈现的玩家级别。我的意思是重新定位基本上不是拥有我现在拥有的随机系统,而是拥有一个设计我设计的关卡的系统。 – user1994100 2013-04-10 08:10:59
因此,不要在循环中随机选择位置,而应在将platofrm添加到列表时指定位置。这可以通过代码来分配,可能通过诸如“GetPlatformsForLevel(int level)”之类的方法,或者从外部源(DB,配置文件等)中提取数据。关于目前的水平,你绝对不希望这是随机的。因为你将存储你不需要或使用的平台 - 尽管我认为这取决于性能,即你的级别切换的速度有多快(是否有时间每次加载下一组平台?) – musefan 2013-04-10 08:17:04