Hai messo un codice che deve essere eseguito una sola volta in un timer, con una condizione. Questo NON si deve fare. Scrivilo prima di avviare il timer. attrad e att non vengono usati. Poi sommi alla distanza la gittata: questo a cosa serve? Inoltre non tieni conto della posizione iniziale (nel codice non c'è menzione a nessuna textbox che indichi la posizione).
Questa condizione è verificata se il proiettile è nello sfondo... Sei sicuro che sia giusta?
proiettile.left raggiunge sfondo.width prima dell'effettiva fine dello sfondo, a meno che lo sfondo non abbia coordinata x=0 sul form. Non ti sembra più utile definire un paio di coordinate per questo proiettile invece che lavorare con quelle proprietà?
Codice sorgente - presumibilmente C# / VB.NET |
Dim proX, proY As Int32
proX = proiettile.Location.X - sfondo.Location.X
proY = proiettile.Location.Y - sfondo.Location.Y
|
In questo sistema di riferimento, il punto (0,0) coincide con il vertice superiore sinistro dello sfondo, ed è coerente scrivere "If proX > sfondo.Width Then".