MikeLadurner
Cadet 1st Year
- Registriert
- Sep. 2011
- Beiträge
- 14
Hallo Zusammen
Ich muss für die Schule ein Projekt programmieren. Ich habe mich für DirectX und C# entschieden, mit dem ich ein Tanks programmiere. Einige kennens unter dem Namen Cannons und so. Es geht darum einander abzuschiessen, in 2D.
Mein Problem ist der Rauch hinter der Kanonenkugel. Ich will das mit einer Liste machen, darin werden SmokeParticles gespeichert. Das SmokeParticle dings ist ein Struct, mit einem Vector2 Size und einem für die Position. Position muss nur gelesen werden nach dem erstellen. Die Size hingegen möchte ich bei jedem durchlauf erhöhen.
Bei einer Liste muss man ja immer das ganze objekt zuweisen. Beim erstellen dieses neuen SmokeParticle weise ich ihm gerade den betroffenen zu. Dann ändere ich die grösse und so.
Seht selbst:
Dieser Code ist in der Klasse Smoke, die von der MainForm instanziert wird im Konstruktor.
Wenn ich denn alles Laufen lasse, dann kommt ein Weisses Fenster mit einem Roten Kreuz darin. Werdet ihr wohl auch schon gesehen haben. Wenn ich aber die Vier ersten zeilen in der For schleife auskommentiere geht es. Wie kann ich das anderst machen dass es funktioniert? Ich kann euch von mir aus auch das ganze projekt zuschicken, ist nicht gross. Oder weiteren Code posten...
Wäre toll wenn mal wer schauen könnte.
Ich muss für die Schule ein Projekt programmieren. Ich habe mich für DirectX und C# entschieden, mit dem ich ein Tanks programmiere. Einige kennens unter dem Namen Cannons und so. Es geht darum einander abzuschiessen, in 2D.
Mein Problem ist der Rauch hinter der Kanonenkugel. Ich will das mit einer Liste machen, darin werden SmokeParticles gespeichert. Das SmokeParticle dings ist ein Struct, mit einem Vector2 Size und einem für die Position. Position muss nur gelesen werden nach dem erstellen. Die Size hingegen möchte ich bei jedem durchlauf erhöhen.
Bei einer Liste muss man ja immer das ganze objekt zuweisen. Beim erstellen dieses neuen SmokeParticle weise ich ihm gerade den betroffenen zu. Dann ändere ich die grösse und so.
Seht selbst:
Code:
public void ResizeSmoke()
{
for (int i = 0; i <= smokeList.Count; i++)
{
SmokeParticle temporarySmokeParticle = smokeList[i];
temporarySmokeParticle.size.X += 0.1f;
temporarySmokeParticle.size.Y += 0.1f;
smokeList[i] = temporarySmokeParticle;
if (smokeList[i].size.X >= 30)
{
smokeList.RemoveAt(i);
}
}
}
Dieser Code ist in der Klasse Smoke, die von der MainForm instanziert wird im Konstruktor.
Wenn ich denn alles Laufen lasse, dann kommt ein Weisses Fenster mit einem Roten Kreuz darin. Werdet ihr wohl auch schon gesehen haben. Wenn ich aber die Vier ersten zeilen in der For schleife auskommentiere geht es. Wie kann ich das anderst machen dass es funktioniert? Ich kann euch von mir aus auch das ganze projekt zuschicken, ist nicht gross. Oder weiteren Code posten...
Wäre toll wenn mal wer schauen könnte.