partikel ... flitzt zu schnell

Übersicht BlitzBasic Beginners-Corner

Neue Antwort erstellen

Dottakopf

Betreff: partikel ... flitzt zu schnell

BeitragMi, Sep 26, 2007 10:41
Antworten mit Zitat
Benutzer-Profile anzeigen
hio blitzer !

Da ich grad nen rechner formatier und des noch dauert und ich sonst nichts zu tun hab, hab ich ein kleines partikel dings da geschrieben. Geht auch alles prima, bis auf die tatsache, dass wenn ich mit der maus absetze und dann erneut klicke, die ersten partikel mit vollgas aus dem bild rauschen ^^ obwohl ich die maus kaum bewegt hab. Woran liegt den das ?

Code: [AUSKLAPPEN]

Graphics 800,600,32,2
SetBuffer BackBuffer()

SeedRnd MilliSecs()

Global counter
Global timer = CreateTimer(80)



Type pop
 Field px#
 Field py#
 Field p_color_r
 Field p_color_g
 Field p_color_b
 Field p_speed#
 Field p_speedx#
 Field p_speedy#
End Type




Repeat
Cls
WaitTimer(timer)

create_partikel()
update_partikel()



Flip
Until KeyHit(1)





Function create_partikel()


 If MouseDown(1) Then
   
      
    counter = counter +1
    If counter >= 3 Then
       counter = 0   
   
      info.pop = New pop
         info\px = MouseX()
         info\py = MouseY()
          info\p_speedx = MouseXSpeed()
          info\P_speedy = MouseYSpeed()
           info\p_color_r = Rnd(0,255)
           info\p_color_g = Rnd(0,255)
           info\p_color_b = Rnd(0,255)
            info\p_speed = 0
   
      End If   
   
   
 End If



End Function


Function update_partikel()

  For info.pop = Each pop
 
      info\p_speed = info\p_speed + 0.1 ;gravi
       info\py = info\py + ( info\p_speed + (info\p_speedy*0.2) ) ;maus speed
      info\px = info\px + info\p_speedx*0.2
   
      Color info\p_color_r,info\p_color_g,info\p_color_b : Oval info\px ,info\py,2,2

           If info\py > 600 Then Delete info.pop

  Next


End Function



Weis einer wie ich das "ding" ein bisschen lustiger und knuffiger mach ? Confused

mfg Dottakopf
Rechtschreibfehler gelten der allgemeinen Belustigung!

Hubsi

BeitragMi, Sep 26, 2007 11:39
Antworten mit Zitat
Benutzer-Profile anzeigen
MouseX- bzw. YSpeed geben den Wert seit der letzten Abfrage zurück. Da Du diese Werte nur in der Funktion abfragst werden sie zu wenig oft aktualisiert und erreichen deshalb oftmals so utopische Werte. Speichere die Werte in der Hauptschleife in Variablen ab, welche dann der Funktion übergeben werden und es müßte funktionieren Very Happy

Dottakopf

BeitragMi, Sep 26, 2007 11:46
Antworten mit Zitat
Benutzer-Profile anzeigen
aber wenn ich des jetzt in der hauptschleife mache, dann werden die partikel ja immer so schnell fliegen wie sich gerade in diesem moment die maus bewegt. Somit is doch dann das selbständige fliegen mit der anfangsgeschwindigkeit aufgehoben oder ?

mfg Dottakopf
Rechtschreibfehler gelten der allgemeinen Belustigung!

BladeRunner

Moderator

BeitragMi, Sep 26, 2007 12:04
Antworten mit Zitat
Benutzer-Profile anzeigen
Ich hab es wie vorgeschlagen umgebaut und es funzt sehr gut. Du kannst ja auch ne abfrage machen wie gross die Werte sind und sie wenn sie zu klein sind auf einen Startwert setzen
Zu Diensten, Bürger.
Intel T2300, 2.5GB DDR 533, Mobility Radeon X1600 Win XP Home SP3
Intel T8400, 4GB DDR3, Nvidia GF9700M GTS Win 7/64
B3D BMax MaxGUI

Stolzer Gewinner des BAC#48, #52 & #92

Dottakopf

BeitragMi, Sep 26, 2007 12:36
Antworten mit Zitat
Benutzer-Profile anzeigen
ach lal ^^

Sry ich hätt vielleicht ned so lala lesen sollen. Mein fehler !

Umgesetzt also so :

Code: [AUSKLAPPEN]

Graphics 800,600,32,2
SetBuffer BackBuffer()

SeedRnd MilliSecs()
HidePointer


Global counter,p_sx#,p_sy#
Global timer = CreateTimer(80)
Global mx,my


Type pop
 Field px#
 Field py#
 Field p_color_r#
 Field p_color_g#
 Field p_color_b#
 Field p_speed#
 Field p_speedx#
 Field p_speedy#
End Type




Repeat
Cls
WaitTimer(timer)

p_sx# = MouseXSpeed()
p_sy# = MouseYSpeed()

create_partikel()
update_partikel()
update_cursor()
 


Flip
Until KeyHit(1)





Function create_partikel()


 If MouseDown(1) Then
   
      
    counter = counter +1
    If counter >= 3 Then
       counter = 0   
   
      info.pop = New pop
         info\px = MouseX() +Rnd(-5,5)
         info\py = MouseY() +Rnd(-5,5)
          info\p_speedx = p_sx#
          info\P_speedy = p_sy#
           info\p_color_r = Rnd(0,255)
           info\p_color_g = Rnd(0,255)
           info\p_color_b = Rnd(0,255)
            info\p_speed = 0
   
      End If   
   
   
 End If



End Function


Function update_partikel()

  For info.pop = Each pop
 
         
       info\p_speed = info\p_speed + 0.11115 ;gravi
       info\py = info\py + ( info\p_speed + (info\p_speedy*0.2) ) ;maus speed
      info\px = info\px + info\p_speedx*0.2
   
      Color info\p_color_r,info\p_color_g,info\p_color_b : Oval info\px ,info\py,2,2

           If info\py > 600 Then Delete info.pop

  Next


End Function


Function update_cursor()

      mx = MouseX()
      my = MouseY()

      Color 0,0,150 Rect mx,my,3,3,1



End Function



Hmm aber irgendwie fehlt da noch das spritzige, knuddlige ... es fehlt ein gewisses etwas. Ein etwas des es noch a wengl auf peppt. Des ist so leblos, oder bekommt man des ned "atemberaubender" ^^

~ EDIT ~ ich hab die erstell punkte verändert und dern cursor ersetzt. Aber vielleicht fällt euch ja nochwas ein

mfg Dottakopf

kriD

Betreff: ^^

BeitragMi, Sep 26, 2007 15:45
Antworten mit Zitat
Benutzer-Profile anzeigen
hi

mach doch funken..
die sind denn erst weiß/gelb und werden dann rot/orange, bis sie verglühen.... das würd schon mehr hermachen glaub ich^^

oder du machst n sandfallgame draus^^

MfG kriD
Wenn ich du wäre, wäre ich lieber ich!

Xeres

Moderator

BeitragMi, Sep 26, 2007 16:06
Antworten mit Zitat
Benutzer-Profile anzeigen
Oder auch:
-Die funken glühen von rot bis gelb/weiß auf, und zerspringen in weitere funken die in zufälliger Richtung davonfliegen und ihrerseits zerspringen etc.
-Lass sie am Bildschirmrand abprallen
-Mach zwei verschieden gefärbte funkentypen, die sich bei Berührung gegenseitig auslöschen...

Die Möglichkeiten sind schier endlos Surprised
Win10 Prof.(x64)/Ubuntu 16.04|CPU 4x3Ghz (Intel i5-4590S)|RAM 8 GB|GeForce GTX 960
Wie man Fragen richtig stellt || "Es geht nicht" || Video-Tutorial: Sinus & Cosinus
T
HERE IS NO FAIR. THERE IS NO JUSTICE. THERE IS JUST ME. (Death, Discworld)

Dottakopf

BeitragDo, Sep 27, 2007 8:00
Antworten mit Zitat
Benutzer-Profile anzeigen
oha ^^

Stimmt das ist sehr kreativ und würde bestimmt cool aussehen, aber das ist dan doch schon ganzschön komplex für ne spielerrei ^^

Aber an den Farben werd ich auf jedenfall was machen!
Wenn ich noch bock hab schau ich mir mal des mit dem zerspringen/abprallen an.

mfg Dottakopf

Dottakopf

BeitragDo, Sep 27, 2007 13:16
Antworten mit Zitat
Benutzer-Profile anzeigen
ok ich hab jetzt diese farbstufungen drinn. Und meine frage an eucht:
Kann man des als funken identifizieren?? ich find es hält sich in grenzen.

Code: [AUSKLAPPEN]

Graphics 800,600,32,2
SetBuffer BackBuffer()

SeedRnd MilliSecs()
HidePointer


Global counter,p_sx#,p_sy#
Global timer = CreateTimer(80)
Global mx,my


Type pop
 Field px#
 Field py#
 Field p_color_r#
 Field p_color_g#
 Field p_color_b#
 Field p_speed#
 Field p_speedx#
 Field p_speedy#
End Type




Repeat
Cls
WaitTimer(timer)

p_sx# = MouseXSpeed()
p_sy# = MouseYSpeed()

create_partikel()
update_partikel()
update_cursor()
 


Flip
Until KeyHit(1)





Function create_partikel()


 If MouseDown(1) Then
   
      
    counter = counter +1
    If counter >= 3 Then
       counter = 0   
   
      info.pop = New pop
         info\px = MouseX() +Rnd(-5,5)
         info\py = MouseY() +Rnd(-5,5)
          info\p_speedx = p_sx#
          info\P_speedy = p_sy#
           info\p_color_r = Rnd(0,255)
           info\p_color_g = Rnd(0,255)
           info\p_color_b = Rnd(0,255)
            info\p_speed = 0
   
      End If   
   
   
 End If



End Function


Function update_partikel()

  For info.pop = Each pop
 
         
       info\p_speed = info\p_speed + 0.1 ;gravi
       info\py = info\py + ( info\p_speed + (info\p_speedy*0.2) ) ;maus speed
      info\px = info\px + info\p_speedx*0.2
   
      Color info\p_color_r,info\p_color_g,info\p_color_b : Oval info\px ,info\py,2,2

           If info\py > 600 Then Delete info.pop

  Next


End Function


Function update_cursor()

      mx = MouseX()
      my = MouseY()

      Color 0,0,150 Rect mx,my,3,3,1



End Function


ich hatte auch eine "life" variable, welche für "das verglühen" sorgen sollte, aber irgendwie sind die trotz rnd(0,200) immer an der fast gleichen stelle verschwunden. Das sah extrem unnatürlich aus, und daher hab ich des wieder rausgenommen.
Was haltet ihr von den Farbstufen?

mfg Dottakopf
 

Moses

BeitragDo, Sep 27, 2007 13:56
Antworten mit Zitat
Benutzer-Profile anzeigen
naja hat eher was von konfetti ^^, weiß , helles rot, gelb, orange in meheren abstufungen, und mehr streung, sollten dann auch dunkler werden mit der zeit, vom unterem rand kurz mit nem aufleuchen apprallen und bis zum ausglühen liegenbleiben ..., nen texturiertes sprite mit weichen rändern könnte auch nicht schaden, dann brauch man auch nicht abdunkeln sonder scalt das sprite einfach runter im 3d modus Wink
  • Zuletzt bearbeitet von Moses am Do, Sep 27, 2007 14:35, insgesamt einmal bearbeitet

Xeres

Moderator

BeitragDo, Sep 27, 2007 14:33
Antworten mit Zitat
Benutzer-Profile anzeigen
Wenn du die Farbgebung der Partikel nicht völlig zufällig wählst, sondern etwas eingrenzt:
Code: [AUSKLAPPEN]
info\p_color_r = Rnd(200,255)
info\p_color_g = Rnd(0,128)
info\p_color_b = Rnd(0,255)

und bei der Aktualisierung noch so etwas in der Art einfügst:
Code: [AUSKLAPPEN]
info\p_color_r = info\p_color_r - 1 : If info\p_color_r < 0 Then info\p_color_r = 0
info\p_color_g = info\p_color_g - 1 : If info\p_color_g < 0 Then info\p_color_g = 0
info\p_color_b = info\p_color_b - 1 : If info\p_color_b < 0 Then info\p_color_b = 0
Wären es schon mal ganz nette Funken. Oh, und ich würde die Gravitation ein Tick runterschrauben ^^

Ich glaub fast, ich bau mir lieber selber mal so eine Partikelspielerei als weiter gute Ratschläge um mich zu werfen Razz
Win10 Prof.(x64)/Ubuntu 16.04|CPU 4x3Ghz (Intel i5-4590S)|RAM 8 GB|GeForce GTX 960
Wie man Fragen richtig stellt || "Es geht nicht" || Video-Tutorial: Sinus & Cosinus
T
HERE IS NO FAIR. THERE IS NO JUSTICE. THERE IS JUST ME. (Death, Discworld)

Dottakopf

BeitragDo, Sep 27, 2007 17:08
Antworten mit Zitat
Benutzer-Profile anzeigen
^^ ja des soll ned so rüber kommen als ob ich euch ausquetsch.

Wollte halt noch n paar andere meinungen einholen, und ich find des irgnednwie faszinierend wenn man die so durch die gegend "wirft"

mfg Dottakopf

Xeres

Moderator

BeitragDo, Sep 27, 2007 17:39
Antworten mit Zitat
Benutzer-Profile anzeigen
Falls es interessiert: Meine Materie-Antimaterie Partikel Simulation funktioniert ganz gut - danke für die gute Idee ^^
Mal sehen was Partikel noch so hergeben...

Edit: Warum werden ausgerechnet im Codepasting die "\" Zeichen nicht übernommen? Mit Types ist das denn ja doof...
Win10 Prof.(x64)/Ubuntu 16.04|CPU 4x3Ghz (Intel i5-4590S)|RAM 8 GB|GeForce GTX 960
Wie man Fragen richtig stellt || "Es geht nicht" || Video-Tutorial: Sinus & Cosinus
T
HERE IS NO FAIR. THERE IS NO JUSTICE. THERE IS JUST ME. (Death, Discworld)

Dottakopf

BeitragFr, Sep 28, 2007 10:36
Antworten mit Zitat
Benutzer-Profile anzeigen
ich würd mir echt gern anschauen aber ich bekomms nicht zum laufen Embarassed
hast du n funktionsfähigen code ? zum schicken wäre echt interesiert

~Edit~ etz merk ich erst, dass ich bei meinem zeiten code - post statt dem neuen code den alten erneut reingeschrieben habe.... Kein wunde das des nicht wie funken sondern wie konfetie ausschaut, da es immer noch konfetie ist Laughing . Peinlich sry. Ich hab auch den funken code nimma da Crying or Very sad (war auf usb.. ich zieh in raus und nix mehr druff)


mfg Dottakopf

Neue Antwort erstellen


Übersicht BlitzBasic Beginners-Corner

Gehe zu:

Powered by phpBB © 2001 - 2006, phpBB Group