Generalnie zależy od kaczki
Najtrywialniejszy hitbox, to chyba po prostu wysokość i szerokość obrazka z kaczką.
Dla tła dodajemy onclick zliczający nietrafione strzały, a obrazek z kaczką zalicza trafienia - i tyle

Kopiuj
public Form1()
{
InitializeComponent();
pictureBox1.SizeMode = PictureBoxSizeMode.StretchImage;
pictureBox1.Image = Image.FromFile("woda.jpg");
pictureBox1.Click += PictureBox1_Click;
pictureBox2.Visible = false;
pictureBox2.SizeMode = PictureBoxSizeMode.StretchImage;
pictureBox2.Height = 100;
pictureBox2.Width = 100;
pictureBox2.Image = Image.FromFile("kaczka.jpg");
pictureBox2.Location = new Point(15, 15);
pictureBox2.Click += PictureBox2_Click;
}
int score = 0;
int missedshoots = 0;
private void PictureBox1_Click(object sender, EventArgs e)
{
missedshoots++;
label2.Text = $"Missed: {missedshoots}";
}
private void PictureBox2_Click(object sender, EventArgs e)
{
score++;
label1.Text = $"Score: {score}";
}
async Task PutTaskDelay()
{
await Task.Delay(50);
}
async void GameLoop()
{
pictureBox2.Visible = true;
while (true)
{
await PutTaskDelay();
MoveKaczka();
}
}
void MoveKaczka()
{
pictureBox2.Location = new Point
(
pictureBox2.Location.X + 1,
pictureBox2.Location.Y + 1
);
}
private void Start_Click(object sender, EventArgs e)
{
GameLoop();
}