C# 标签有时会粘在其他标签上。Winforms基本游戏,包含移动和合并
我已经创造了一个游戏,我发现大部分已经完成。唯一的问题是,有时当你走向一堵同样是标签的墙时,你会被卡住。 相信我,当我说这将是一个超级困难的我来解释,我相信你更难解决 好的,我会先介绍一些基本信息,我想这会有所帮助 这是一个迷宫游戏,玩家用箭头键移动,用布尔来确定前进方向。 墙也是标签,并从中获取冲突C# 标签有时会粘在其他标签上。Winforms基本游戏,包含移动和合并,c#,winforms,label,C#,Winforms,Label,我已经创造了一个游戏,我发现大部分已经完成。唯一的问题是,有时当你走向一堵同样是标签的墙时,你会被卡住。 相信我,当我说这将是一个超级困难的我来解释,我相信你更难解决 好的,我会先介绍一些基本信息,我想这会有所帮助 这是一个迷宫游戏,玩家用箭头键移动,用布尔来确定前进方向。 墙也是标签,并从中获取冲突 private List<Label> GetLabels(Control control) { foreach (var childControl
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;
}
要补充的是,我是球员的速度
所以人们。有什么问题吗?如果您需要更多的代码或数据,请询问我,我将全神贯注地监测这一点
编辑:
这是我检查结肠炎的方法
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
这不是我在冲突时向bumb添加“i”时所做的吗?可能吧,尽管我还没有看到您实际的碰撞检查。不过,从经验来看,将对象移动到墙中,然后再将其移回墙外,会引起碰撞异常,例如它卡在墙中。如果您仅使用IntersectsWith,如何设置左右布尔值?是的。有关于如何修复的线索吗?我明白你所说的在colision请求truble后如何移植回来,但我不知道如何修复它。我会创建一个自定义边界碰撞函数,而不是内置的IntersectsWith函数,将速度合并到该函数中,并在碰撞为真时防止移动。对于未来的项目,如果您使用的是WinForms,我建议您至少使用GDI+@谢谢你的补充,我可能会问我的老师,他是否能为我们解释一些基本的GDI。
//Velocity included
if(player.Left - i <= wall.Right)
//Velocity unaccounted for
if(player.Left <= wall.Right