C# 碰撞只适用于两个侧面
因此,我试图在Visual studio express 2013的c#中制作一个pacman克隆。我有迷宫,我在边缘贴上标签。我有一个关于pacman未来坐标的观点。如果该点与标签不相交,pacmans位置将取该点的位置。当“吃豆人”从下或右投球时,这种方法很有效,但如果他从右或右投球,则不起作用。对于鬼魂来说也是如此,鬼魂的移动是随机生成的。他们似乎都认为标签更大。我试图在互联网上搜索原因,但似乎找不到答案。我放下了碰撞检查和pacman移动的部件。提前谢谢C# 碰撞只适用于两个侧面,c#,collision-detection,C#,Collision Detection,因此,我试图在Visual studio express 2013的c#中制作一个pacman克隆。我有迷宫,我在边缘贴上标签。我有一个关于pacman未来坐标的观点。如果该点与标签不相交,pacmans位置将取该点的位置。当“吃豆人”从下或右投球时,这种方法很有效,但如果他从右或右投球,则不起作用。对于鬼魂来说也是如此,鬼魂的移动是随机生成的。他们似乎都认为标签更大。我试图在互联网上搜索原因,但似乎找不到答案。我放下了碰撞检查和pacman移动的部件。提前谢谢 private void
private void timer_Tick(object sender, EventArgs e)
{
//colision check
PictureBox intermed = new PictureBox
{
Location = new Point(pictureBox1.Location.X + pacdirx, pictureBox1.Location.Y + pacdiry),
};
if (!intermed.Bounds.IntersectsWith(label1.Bounds) )
pictureBox1.Location = new Point(pictureBox1.Location.X + pacdirx, pictureBox1.Location.Y + pacdiry);
private void Form3_KeyDown(object sender, KeyEventArgs e)
{
//pacman movement
if (e.KeyCode == Keys.W)
{
pacdiry = -3;
pacdirx = 0;
pictureBox1.Image = Image.FromFile("eat_up.gif");
}
if (e.KeyCode == Keys.S)
{
pacdiry = 3;
pacdirx = 0;
pictureBox1.Image = Image.FromFile("eat_down.gif");
}
if (e.KeyCode == Keys.D)
{
pacdiry = 0;
pacdirx = 3;
pictureBox1.Image = Image.FromFile("eat_right.gif");
}
if (e.KeyCode == Keys.A)
{
pacdiry = 0;
pacdirx = -3;
pictureBox1.Image = Image.FromFile("eat_left.gif");
}
}
您从未设置intermed的大小,因此它将是默认大小(100x50)。此外,没有理由首先创建图片框-只需使用大小合适的
矩形
。此外,没有理由首先创建图片框-只需使用大小合适的矩形。