J'essaye de créer un jeu de style mario 2D. Tout a fonctionné jusqu'à ce que je commence à le rendre plus «objectif». Mario n'arrête pas à la fin de la fenêtre - s'arrête mais après traverse la fenêtre. Si je fais la méthode sans ref, mario ne s'arrête même pas tout le temps.C# manque de colision en simple jeu 2D en utilisant ref dans la méthode
Mario classe
class Mario: System.Windows.Forms.PictureBox
{
public Mario(int x, int y)
{
Image = Image.FromFile("Mario.png");
Location = new Point(x, y);
Size = new Size(16, 32);
SizeMode = System.Windows.Forms.PictureBoxSizeMode.Zoom;
TabIndex = 0;
TabStop = false;
}
public void colision(System.Windows.Forms.Panel s,ref bool l, ref bool r)
{
if (this.Right > s.Right) { r = false; }
if (this.Left < s.Left) { l = false; }
}
}
Classe principale - Form1
public partial class Form1 : Form
{
bool right=false,left=false;
public Form1()
{
InitializeComponent();
player.Top = screen.Height - player.Height;
}
private void timer1_Tick(object sender, EventArgs e)
{
if(right== true) { player.Left += 1; }
if (left == true) { player.Left -=1; }
player.colision(screen, ref left, ref right);
}
écran
est System.Windows.Forms.Panel et le lecteur est de type Mario qui ont été initialisé dans Form1.Designer.cs
J'ai supprimé le champ et les méthodes non pertinents.
Pourquoi cette balise tagué [: Graphics2D ]? – devRicher
débogueur est votre meilleur ami. apprenez comment l'utiliser pour savoir où se trouve votre problème: p –
programme passe en condition if. – Xalion