Problem mit schüssen.

Übersicht BlitzBasic Beginners-Corner

Neue Antwort erstellen

otta

Betreff: Problem mit schüssen.

BeitragMo, März 13, 2006 20:11
Antworten mit Zitat
Benutzer-Profile anzeigen
Hallo liebe Community,

Ich bin gerade dabei ein kleinen Shooter zu machen.
Mein Problemchen ist das ich mit Hilfe der Suche funktion ein kleines Schussscript gefunden habe das eigendlich für ein 2D Spiel war.
Naja da mein Spiel eh nur von der Seite gesehen wird aber dennoch 3D ist habe ich es einfach übernommen und ein wenig bearbeitet.
Aber jetzt funktioniert es nicht so wie es soll. Hier mal der Code:

Code: [AUSKLAPPEN]

If KeyDown(57) Then
   s.schuss=new schuss

   s\x=playerx
   s\y=playery
   EndIf
   
   For s.schuss=Each schuss
   
   s\x=s\x+1
   PositionEntity proj,s\x,s\y+2,0
   If s\x>640
   Delete s.schuss
   EndIf
   Next


So meine Problem ist das wenn der Schuss fliegt und ich während dessen noch einmal drücke verschwindet der fliegende und ein neuer Schuss fliegt los. Das ist zwar toll das dieser wenichsten schonmal fliegt allerdings währe es tol wenn mehrere Schüsse fliegen könnten.

Kann mir da vielleicht Jemand weiterhelfen?
Wenn ihr den ganzen Code braucht um den Fehler zu finden sagt bescheid.

Über jeden Hinweis bin ich dankbar Smile .
AthlonXP 2800+, Radeon 9600XT,160GBHDD,512 MB DDR Ram (neuer Rechner neues Glück;))

Aktuelles Projekt:
momentan Projektlos
  • Zuletzt bearbeitet von otta am Mo, März 13, 2006 20:29, insgesamt einmal bearbeitet

Smily

BeitragMo, März 13, 2006 20:29
Antworten mit Zitat
Benutzer-Profile anzeigen
Also ich kann jetzt auf anhieb keinen Fehler im Code finden. Es wird ein neuer Schuss erstellt und es werden alle in einer schleife durchgegangen.

Hast du im Code noch andere Stellen, wo Irgendwelche operationen mit den Types durchgeführt werden, wenn ja poste die mal.
Lesestoff:
gegen Softwarepatente | Netzzensur | brain.exe | Unabhängigkeitserklärung des Internets

"Wir müssen die Rechte der Andersdenkenden selbst dann beachten, wenn sie Idioten oder schädlich sind. Wir müssen aufpassen. Wachsamkeit ist der Preis der Freiheit --- Keine Zensur!"
stummi.org

otta

BeitragMo, März 13, 2006 20:42
Antworten mit Zitat
Benutzer-Profile anzeigen
ich poste mal den ganzen code, der ist noch nciht alzulang

Code: [AUSKLAPPEN]

Graphics3D 800,600,32,2

;variabeln festlegen
spielerx#=1
spielery#=2

;Dateien werden hier geladen
level=LoadMesh("maps/testlevel.b3d")

ballerman=loadsprite("figuren/bm.png",2)
SpriteViewMode ballerman,2

proj = LoadSprite("sonstiges/schuss.png")

;Kamera und Licht
kamera=createcamera(ballerman)
licht=createlight()

;Objekte werden gesetzt
PositionEntity kamera,1,2,-4
RotateEntity kamera,10,0,0

PositionEntity level,0,0,0
PositionEntity licht,1,2,0

 

Type schuss
 Field x,y
End Type


While Not KeyHit(1)



   If keydown(203) then
   spielerx=spielerx-0.1
    EndIf
   
   If keydown(205) then
    spielerx=spielerx+0.1
   EndIf
   
 
   
   If KeyDown(57) Then
   s.schuss=new schuss

   s\x=playerx
   s\y=playery
   EndIf

   
   For s.schuss=Each schuss
   
   
   s\x=s\x+1
   PositionEntity proj,s\x,s\y+2,0
   If s\x>640
   Delete s.schuss
   EndIf
   Next
   
PositionEntity ballerman,spielerx,spielery,0 

RenderWorld

Flip

Wend
AthlonXP 2800+, Radeon 9600XT,160GBHDD,512 MB DDR Ram (neuer Rechner neues Glück;))

Aktuelles Projekt:
momentan Projektlos

Smily

BeitragMo, März 13, 2006 21:01
Antworten mit Zitat
Benutzer-Profile anzeigen
ahhh. ich habs Very Happy

die zeile
[syntax="bb"]PositionEntity proj,s\x,s\y+2,0
[/syntax]

verschiebt das Objekt. Also wird EIN schuss erst zum ersten eintrag bewegt, dann zum zweiten, dann zum dritten... bis zum letzten. und dann wird gerendert. also wird der schuss nur beim letzten eintrag angezeigt.

Du musst für jeden schuss ein Entity für sich erstellen

Ich poste mal bewusst keinen Code, weil du da nichts lernen würdest Razz
Lesestoff:
gegen Softwarepatente | Netzzensur | brain.exe | Unabhängigkeitserklärung des Internets

"Wir müssen die Rechte der Andersdenkenden selbst dann beachten, wenn sie Idioten oder schädlich sind. Wir müssen aufpassen. Wachsamkeit ist der Preis der Freiheit --- Keine Zensur!"
stummi.org

Iguan

BeitragDi, März 14, 2006 18:43
Antworten mit Zitat
Benutzer-Profile anzeigen
1. Erstelle am Anfang deines Codes (vor der Mainloop)das Schuss-Entity
2.Verstecke dieses mit HideEntity

Nun kannst du beim Erstellen eines Schusses dieses versteckte Schuss-Entity kopieren (CopyEntity). etwa so: s\ent = CopyEntity(Schuss-Entity)

Hoffe dir geholfen zu haben

otta

BeitragDi, März 14, 2006 19:47
Antworten mit Zitat
Benutzer-Profile anzeigen
Vielen Dank für eure hilfe werd mich gleich mal drann probieren. Und danke Smily, dass du nicht gleich nen kompletten Code gepostet hast! Ein wenig will ich meine Gehirnzellen doch selber mal arbeiten lassen Smile

Edit: Es hat zwar ein weilchen gedauert aber ich habs nun hinbekommen Smile, danke nochmal.
AthlonXP 2800+, Radeon 9600XT,160GBHDD,512 MB DDR Ram (neuer Rechner neues Glück;))

Aktuelles Projekt:
momentan Projektlos

Neue Antwort erstellen


Übersicht BlitzBasic Beginners-Corner

Gehe zu:

Powered by phpBB © 2001 - 2006, phpBB Group