标签有时会粘在其他标签上.用移动和碰撞形成基本游戏
本文关键字:标签 碰撞 游戏 移动 其他 | 更新日期: 2023-09-27 17:58:51
我创建了一个游戏,我发现它基本上已经完成了。唯一的问题是,有时当你走向一堵同样是标签的墙时,你会被卡住。相信我,当我这么说的时候,这将是我难以解释的,我相信你更难解决。
好的,所以我会先提供一些基本信息,我认为这会有所帮助。
这是一个迷宫游戏,玩家用箭头键移动,用bools来确定前进的方向。墙也是标签,并从这个中获得冲突
private List<Label> GetLabels(Control control)
{
foreach (var childControl in control.Controls)
{
if (childControl is Label && ((Label)childControl).Name != "player")
{
Labels.Add((Label)childControl);
}
else
{
GetLabels((Control)childControl);
}
}
return Labels;
}
当timer1被启用并且通过keyDown操作左右向上或向下为true时,移动发生。我已经做到了,当你与墙共线时,你会在与墙相反的方向上移植1个像素,当你用这个代码撞墙时
if (Right)
{
Right = false;
player.Left -= 2 + i;
timer1.Enabled = false;
}
else if (Left)
{
Left = false;
player.Left += 2 + i;
timer1.Enabled = false;
}
要补充的是,我是球员的速度。
人们也是如此。可能是什么问题?如果你需要更多的代码或数据,请问我,我会全力监控。
编辑:
这就是我检查colsion 的方式
foreach (var label in Labels.Where( label => player.Bounds.IntersectsWith(label.Bounds)))
private List<Label> GetLabels(Control control)
{
foreach (var childControl in control.Controls)
{
if (childControl is Label && ((Label)childControl).Name != "player")
{
Labels.Add((Label)childControl);
}
else
{
GetLabels((Control)childControl);
}
}
return Labels;
}
在检查碰撞时,我建议在包括速度的情况下进行检查。例如,如果我正在查看玩家左侧的收藏。。。
//Velocity included
if(player.Left - i <= wall.Right)
//Velocity unaccounted for
if(player.Left <= wall.Right