Types und Sprites > Explosions Problem

Übersicht BlitzBasic Blitz3D

Neue Antwort erstellen

 

mevos

Betreff: Types und Sprites > Explosions Problem

BeitragMi, Sep 20, 2006 17:12
Antworten mit Zitat
Benutzer-Profile anzeigen
Hallo,

Ich hab ein Problem mit meinem Code (den ich selbst gemacht habe) und komme einfach nicht weiter.


Code: [AUSKLAPPEN]
  For sprites.sprites = Each sprites
      MoveEntity sprites\objs,0,0,6000.0 * frametime_sec#
RotateSprite sprites\objs, Zufallszahlen

If EntityCollided(sprites\objs,TYPE_WORLD)
X_sprite#=CollisionX# (sprites\objs, TYPE_WORLD)
Y_sprite#=CollisionY# (sprites\objs, TYPE_WORLD)
Z_sprite#=CollisionZ# (sprites\objs, TYPE_WORLD)


sprites1.sprites1 = New sprites1
      sprites1\objs = CopyEntity(explodesprite2)
      ShowEntity sprites1\objs
      sprites1\alpha#=1
PositionEntity sprites1\objs,X_sprite#,Y_sprite#,Z_sprite#

EndIf


For sprites1.sprites1 = Each sprites1
 sprites1\scale#=sprites1\scale#+1
ScaleSprite sprites1\objs,10+sprites1\scale#, 10+sprites1\scale#

sprites1\alpha#=sprites1\alpha#-0.1
EntityAlpha sprites1\objs,sprites1\alpha#

If sprites1\alpha# =< 0 Then
FreeEntity sprites1\objs
Delete sprites1
EndIf

Next



Das ganze dient um eine explosion zu erstellen. Nachdem ich ein sprites\objs die Welt berührt, wird an der stelle durch sprites1.sprites1 = New sprites1 ein neues Sprite erstellt, welches dann größer scalliert und alphariert wird.

Das Problem: Es wird aus irgendeinem grund nur kurz alphariert und gescallt. Dann bleibt es einfach stehen. Wenn ich dann wieder schiesse, wird der alte sprite weiter gescallt und alphariert.

Christoph

BeitragMi, Sep 20, 2006 17:41
Antworten mit Zitat
Benutzer-Profile anzeigen
Als erstes fehlt da mal ein ql:Next . Sonst kriegt man das Programm gar nicht zum Laufen...
 

mevos

BeitragMi, Sep 20, 2006 18:24
Antworten mit Zitat
Benutzer-Profile anzeigen
Da ist doch ein Next ganz unten. Und das game läuft ja auch, biss auf mein Problem, welches ich oben beschrieben habe.

Cat

BeitragMi, Sep 20, 2006 19:05
Antworten mit Zitat
Benutzer-Profile anzeigen
Hm, liegt vielleicht daran dass du zweimal den selben Typennamen verwendest also objs, bin mir jetzt aber nicht sicher...
Intel Core 2 Duo E6300 (2 x 1,86 Ghz)

2 x 1024 MB Arbeitsspeicher

NVidia GeForce 8800 GT

rctuner

BeitragDo, Sep 21, 2006 14:22
Antworten mit Zitat
Benutzer-Profile anzeigen
nee glaube ich nicht cat.
[Y[our Film, Game ]M[akers and more [F]un!
www.Master-Entertainment.de.vu

[AMD 6000+ X2 @ 6400+][2GB RAM][NVidia 8800GT 512 MB]
 

mevos

BeitragDo, Sep 21, 2006 16:40
Antworten mit Zitat
Benutzer-Profile anzeigen
Hab die Function jetzt folgendermaßen abgeändert:

Code: [AUSKLAPPEN]
  For sprites.sprites = Each sprites


If EntityCollided(sprites\objs,TYPE_WORLD)
X_sprite#=CollisionX# (sprites\objs, TYPE_WORLD)
Y_sprite#=CollisionY# (sprites\objs, TYPE_WORLD)
Z_sprite#=CollisionZ# (sprites\objs, TYPE_WORLD)

sprites2.sprites2 = New sprites2
      sprites2\objs2 = CopyEntity(explodesprite2)
      ShowEntity sprites2\objs2
      sprites2\alpha2#=1
      sprites2\scale2#=1
PositionEntity sprites2\objs2,X_sprite#,Y_sprite#,Z_sprite#

EndIf


 
Next




For sprites2.sprites2 = Each sprites2
 sprites2\scale2#=sprites2\scale2#+10
ScaleSprite sprites2\objs2,sprites2\scale2#, sprites2\scale2#

sprites2\alpha2#=sprites2\alpha2#-0.3
EntityAlpha sprites2\objs2,sprites2\alpha2#

If sprites2\alpha2# =< 0 Then
FreeEntity sprites2\objs2
Delete sprites2
EndIf

Next


Ich hab jetzt jedem Type einen neuen Namen verpasst.
Jetzt werden sie nicht immer weiter scalliert wenn ich schiesse, sondern nur wenn sie kollidieren. Also einmalig. Wie es auch sein soll. Nur verstehe ich nicht, warum sie nur kurz scalliert werden und die scallierung dann plötzlich stehen bleibt.

Eigendlich sollten sie so lange weiter scalliert werden, biss sie gelöscht werden.

(Ausschnitt von oben)
Code: [AUSKLAPPEN]
 sprites2\scale2#=sprites2\scale2#+10
ScaleSprite sprites2\objs2,sprites2\scale2#, sprites2\scale2#

sprites2\alpha2#=sprites2\alpha2#-0.3
EntityAlpha sprites2\objs2,sprites2\alpha2#
 

Dreamora

BeitragDo, Sep 21, 2006 16:45
Antworten mit Zitat
Benutzer-Profile anzeigen
Versuch mal ScaleSprite falls es sprites sind, die Entity Befehle haben auf Sprites nur eingeschränkte Wirkung.
Ihr findet die aktuellen Projekte unter Gayasoft und könnt mich unter @gayasoft auf Twitter erreichen.
 

mevos

BeitragDo, Sep 21, 2006 17:27
Antworten mit Zitat
Benutzer-Profile anzeigen
wie kommst du auf ScaleEntity???

Ich verwende doch ScaleSprite. Siehe Code!
 

mevsmp

BeitragSa, Sep 23, 2006 23:19
Antworten mit Zitat
Benutzer-Profile anzeigen
sorry für den doppelpost, aber weiß wirklich niemand wo der fehler liegt/liegen könnte?

komme so einfach nicht mit meinem projekt vorran.
 

Dreamora

BeitragSo, Sep 24, 2006 0:13
Antworten mit Zitat
Benutzer-Profile anzeigen
du kannst sie nur bis zu einem bestimmten Punkt skalieren
Am besten nimmst du aber mal den ganzen skalierungs code etc und packst ihn ein kleines testprogramm und schaust da oder lässt dir daten ausgeben so das du weisst wie weit die skalierung möglich ist.

Wir sind leider nicht gott, können also aufgrund von obigem code nicht sagen was sonst noch reinpfuscht
Ihr findet die aktuellen Projekte unter Gayasoft und könnt mich unter @gayasoft auf Twitter erreichen.

Neue Antwort erstellen


Übersicht BlitzBasic Blitz3D

Gehe zu:

Powered by phpBB © 2001 - 2006, phpBB Group