0

所以这是我的情况。我是编程新手,我刚刚开始制作一个非常非常基本的平台游戏。我的意思是真正的平台游戏。

我已经让我的角色进入并跳来跳去,我已经将我的平台创建为一个阵列。这样我就可以将它们并排放在底部。现在还有其他方法可以解决这个问题,但我想知道如何为数组做这件事。

所以我的性格因此而堕落

kirby.yVelocity += 1.0f 

这一切都很好,但我希望他的 yVelocity 在他击中阵列中的任何平台时达到 0.0f。

所以我尝试了这段代码

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

我认为这会起作用,但它给了我一个错误,因为 [i] 说它在这种情况下不适用。

几点注意事项:

kirby 是我的角色名称,drawRect 是 Rectangle 的定义,plat 是我的 Platform 数组,由 13 个平台组成。

感谢任何能提供帮助的人


更新

问题是 plat.drawRect 或 plat[i].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();
4

1 回答 1

0

似乎您必须添加一个 for 循环才能在平台上循环。也许是这样的:

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

在这里,我假设您使用的是 Java,并且Platform是您的 plat-array 的类,它具有 class List<Platform>

于 2013-02-19T21:55:13.710 回答