所以这是我的情况。我是编程新手,我刚刚开始制作一个非常非常基础的平台游戏。我的意思是字面上的平台游戏。
我已经让我的角色进入并跳跃了,我已经将我的平台创建为数组。这样我就可以将它们并排放在底部。现在还有其他方法可以解决这个问题,但我想知道如何为数组做这个。
所以我的角色落在了这个
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();
答案 0 :(得分:0)
好像你必须添加一个for循环来循环平台。也许是这样的:
for(Platform : plat){
if (platform.drawRect.Intersects(kirby.drawRect)){
kirby.yVelocity = 0.0f;
}
}
在这里,我假设你正在使用Java,Platform
是你的平台数组的类,它有类List<Platform>
。