2013-02-19 29 views
0

所以这是我的情况。我是编程新手,刚刚开始制作非常非常基础的平台游戏。我的意思是字面上与平台的游戏。为整个数组创建一条If语句

我已经得到了我的角色并跳跃着,我创建了我的平台作为数组。这样我就可以把它们并排放在底部。现在还有其他方法可以解决这个问题,但我想知道如何为数组做这件事。

所以,我有我的性格与此

这是一切优秀的下降,但我想他yVelocity去为0.0f,当他击中了任何阵列中的平台。

所以,我想这段代码

if (plat[i].drawRect.Intersects(kirby.drawRect)) 
{ 
kirby.yVelocity = 0.0f 
} 

我本以为这工作,但它给我的[I]说,这是不适用这方面的一个错误。

几点注意事项:

科比是我的角色名字,drawRect中是矩形的定义,开发平台是我的平台阵列由13个平台。

由于任何人谁可以帮助


更新

问题是plat.drawRect或高原[我] .drawRect的任何变化不工作。这里是我所有关于平台数组的代码。

struct Platform 
    { 
     public Texture2D txr; 
     public Rectangle drawRect; 
    } 

Platform[] plat; 

    plat = new Platform[13]; 
      for (int i = 0; i < plat.Length; i++) 
      { 
       plat[i].txr = Content.Load<Texture2D>("platform"); 
       plat[i].drawRect = new Rectangle(i * plat[i].txr.Width, 460, plat[i].txr.Width, plat[i].txr.Height);` 
      } 

for (int i = 0; i < plat.Length; i++) 
      { 
       spriteBatch.Draw(plat[i].txr, plat[i].drawRect, Color.White); 
      } 
      spriteBatch.End(); 

回答

0

好像你必须添加一个for循环,以遍历平台。也许是这样的:

for(Platform : plat){ 
    if (platform.drawRect.Intersects(kirby.drawRect)){ 
     kirby.yVelocity = 0.0f; 
    } 
} 

在这里,我假设你使用Java和Platform是班级的高原阵列,其中有List<Platform>类的。

+0

已回答我的问题添加了一个附加内容Gijs – Gandeh 2013-02-19 22:12:39

+0

Gandeh,如果plat [i]无法在任何地方工作,那么您的代码的第二部分是否工作? – Gijs 2013-02-19 22:28:59

+0

是的,平台[i]的工作原理是它沿着底部创建一个平台,就像他们应该出现的那样。当我尝试编写If语句来创建冲突规则时,我只会遇到麻烦。我只需要弄清楚如何引用所有数组项目的“矩形”。因为我在If语句中基本上想做的事情是 - 如果该字符与平台矩形相交,则将字符yVelocity改为0.0f。但正如我所说,我无法获得plat [i] .drawRect工作的任何变化。 – Gandeh 2013-02-19 22:47:26