Hallo an Alle
Ich habe zwei kleine Probleme mit mein Prog. Ich möchte einen Blitz mit der Draw-Funktion zeichnen, sobald meine Spieler zu nahe an die Teslaspulen kommt. Das habe ich soweit hinbekommen. Den Algorithmus für den Blitz habe ich von einem anderen Programm übernommen.
Jetzt habe ich aber anscheinend einen Rechenfehler im Algorithmus, da mein Blitz nicht zu Player springt, sondern um 180° gedreht ist.
Egal was ich auch unternommen habe um es richtig zu stellen, sind leider fehl geschlagen. Und da ich keine Mathe-Chenie bin, kann ich leider auch nicht die Formel so um setzten, das es passt.
Hier mal den Allgorithums:
Im obj_Blitz: Creat-Event:
Alles anzeigen
Im obj_Blitz: beginn-Step:
Alles anzeigen
Im obj_Blitz: Draw-Event:
Alles anzeigen
Ich habe noch die GM-Datei mit angehängt. Damit ich es sehen könnt.
Jetzt noch zu meinem zweiten Problem. Je länger die Blitze gezeichnet werden, desto langsamer wird mein Rechner. Wie kann ich das vermeiden.
So ich hoffe das ich mich verständlich ausgedrückt habe.
Ich hoffe es kommt keiner auf die Idee mir zu sagen das ich doch den Blitz als Sprite zeichnen soll. Auf diese Idee kam ich gleich am Anfang. Leider bin ich mit einen Sprite nicht so flexibel wie mir scheint. Ausser einer von euch lehrt mich eines Besseren. Bin immer für alles offen.
Gruss Drachen
Dienstag den 20.09.2009 - 14.00 Uhr
Hi an Alle
Da sich bis jetzt niemand geäussert hat, geh ich davon aus das keiner einen Tip für mich hat. Werde jetzt doch dem Sprite verwenden müssen.
Wenn doch noch jemand einen Tip haben soll, schreib es einfach hier rein. An allen die es angeschaut haben vielen Dank.
Gruss Drachen
Ich habe zwei kleine Probleme mit mein Prog. Ich möchte einen Blitz mit der Draw-Funktion zeichnen, sobald meine Spieler zu nahe an die Teslaspulen kommt. Das habe ich soweit hinbekommen. Den Algorithmus für den Blitz habe ich von einem anderen Programm übernommen.
Jetzt habe ich aber anscheinend einen Rechenfehler im Algorithmus, da mein Blitz nicht zu Player springt, sondern um 180° gedreht ist.
Egal was ich auch unternommen habe um es richtig zu stellen, sind leider fehl geschlagen. Und da ich keine Mathe-Chenie bin, kann ich leider auch nicht die Formel so um setzten, das es passt.
Hier mal den Allgorithums:
Im obj_Blitz: Creat-Event:
GML-Quellcode
- {
- global.Bl_A = 20; // Blitzauflösung. Je höher die Zahl, desto feiner der Blitz
- global.Aline = 0;
- global.Blitz_id = 0;
- Konstante = 1.570796326794896619;
- farbe[1] = make_color_rgb(140,155,213); // Farbe hell blau 00
- farbe[2] = make_color_rgb(67,77,127);// Farbe hell blau 01
- farbe[3] = make_color_rgb(44,50,86); // Farbe dunkel blau
- x1 = 0;// Blitz_Anfang_x
- y1 = 0;// Blitz_Anfang_y
- x2 = 0;// Blitz_Ende_x
- y2 = 0;// Blitz_Ende_y
- xm = 0;
- ym = 0;
- l = 0;
- a = 0;
- xf1 = 0;
- yf1 = 0;
- xf2 = 0;
- yf2 = 0;
- global.Aline[global.Bl_A+1] = y2
- }
Im obj_Blitz: beginn-Step:
GML-Quellcode
- x1 = global.Blitz_id.x;// Blitz_Anfang_x
- y1 = global.Blitz_id.y;// Blitz_Anfang_y
- x2 = obj_Player.x// Blitz_Ende_x
- y2 = obj_Player.y// Blitz_Ende_y
- Konstante = 1.570796326794896619;
- xm = x2-x1;
- ym = y2-y1;
- scr_Split(0,global.Bl_A);
- l = sqrt(xm*xm+ym*ym);
- a = arctan2(xm,ym);
- xf1 = cos(a);
- yf1 = sin(a);
- xf2 = cos(a+Konstante);
- yf2 = sin(a+Konstante);
- global.Aline[global.Bl_A+1] = y2
Im obj_Blitz: Draw-Event:
GML-Quellcode
- //Blitz erzeugen
- for (z=0; z<global.Bl_A; z+=1)
- {
- px1 = (z*l/global.Bl_A);
- py1 = global.Aline[z];
- px2 = (z+1)*l / global.Bl_A;
- py2 = global.Aline[z+1];
- pos_x1 = x1+px1*xf1+py1*xf2;
- pos_y1 = y1+px1*yf1+py1*yf2;
- pos_x2 = x1+px2*xf1+py2*xf2;
- pos_y2 = y1+px2*yf1+py2*yf2;
- draw_set_alpha(0.5);
- draw_set_color(farbe[1]);
- draw_line(pos_x1, pos_y1, pos_x2, pos_y2)
- draw_set_color(farbe[2]);
- draw_line(pos_x1+1, pos_y1+1, pos_x2+1,pos_y2+1)
- draw_set_color(farbe[3]);
- draw_line(pos_x1+2, pos_y1+2, pos_x2+2,pos_y2+2)
- draw_set_alpha(1);
- }
Ich habe noch die GM-Datei mit angehängt. Damit ich es sehen könnt.
Jetzt noch zu meinem zweiten Problem. Je länger die Blitze gezeichnet werden, desto langsamer wird mein Rechner. Wie kann ich das vermeiden.
So ich hoffe das ich mich verständlich ausgedrückt habe.
Ich hoffe es kommt keiner auf die Idee mir zu sagen das ich doch den Blitz als Sprite zeichnen soll. Auf diese Idee kam ich gleich am Anfang. Leider bin ich mit einen Sprite nicht so flexibel wie mir scheint. Ausser einer von euch lehrt mich eines Besseren. Bin immer für alles offen.
Gruss Drachen

Dienstag den 20.09.2009 - 14.00 Uhr
Hi an Alle
Da sich bis jetzt niemand geäussert hat, geh ich davon aus das keiner einen Tip für mich hat. Werde jetzt doch dem Sprite verwenden müssen.
Wenn doch noch jemand einen Tip haben soll, schreib es einfach hier rein. An allen die es angeschaut haben vielen Dank.
Gruss Drachen

Dieser Beitrag wurde bereits 2 mal editiert, zuletzt von Drachen ()