Feuerbälle schießen...

Übersicht BlitzBasic Beginners-Corner

Neue Antwort erstellen

 

Magna

Betreff: Feuerbälle schießen...

BeitragMi, Okt 06, 2004 14:46
Antworten mit Zitat
Benutzer-Profile anzeigen
Hi, hab wieder mal ne frage bzw. weiß nicht weiter...

Ich möchte, dass mein Charakter bei knopfdruck einen Feuerball schießen kann, so wie im Mario-Beispiel, das im Samples-Ordner von Blitz3D ist.
Hab mir den code angeschaut, und das einzige, was ich weiß, ist, dass ich warscheinlich Types benutzen muss, nur wie das geht weiß ich nicht genau. Hab in der Blitz-Hilfe nachgesehen und habs nicht ganz verstanden.

Also das sollte so in etwas strukturiert sein:

...
Type Fireball
Field variablen...
End Type
...
;main loop

If KeyHit(Zahl)
CreateFireball()
End If
...

Function CreateFireball()

?????

End Function

keine ahnung, bin ja erst seit 2 tagen blitz-benutzer, wäre aber froh, wenn mir das jemand erklären könnte, wie genau das funzt...
Von mir aus auch mit kommentiertem code, solang ichs danach raffe Wink
Dank im vorraus!

Ciao, Magna

Hubsi

BeitragMi, Okt 06, 2004 14:54
Antworten mit Zitat
Benutzer-Profile anzeigen
Ist nicht schwer:Code: [AUSKLAPPEN]
variable.typ=New typ
variable\feld1=1000
variable\feld2=222
Damit ist schon ein neuer Eintrag in der Liste.

Um nun diese Liste von vorne bis hinten koplett durchzugehen:Code: [AUSKLAPPEN]
For variable.typ=Each typ
If variable\feld1=irgendwas Then blubb
Next


Um einen Eintrag zu löschen:Code: [AUSKLAPPEN]
Delete variable.typ
oder die ganze Liste leeren:Code: [AUSKLAPPEN]
Delete Each variable.typ


Das sind die elemtaren Type-Geschichten, ich denke fürs erste wird das sicher ausreichen Wink
Den ganzen Doag im Bett umanandflagga und iaz daherkema und meine Hendl`n fressn...
 

David

BeitragMi, Okt 06, 2004 14:55
Antworten mit Zitat
Benutzer-Profile anzeigen
Hi!

Etwas Pseudocode:
Code: [AUSKLAPPEN]

type FireBall
  field x, y
  field image
  field speed
  field direction (...)
;  field ...
end type

while not keyhit( 1 )
  ;zeichnen usw...
  if keyhit( x ) then CreateNewFireball( Player\ViewVector )

  UpdateBalls()
wend

function UpdateBalls()
  foreach ball ...
    ;ballposition verändern
    ;ball zeichnen DrawImage( ball\img... )
    ;kollision mit diversen gegnern abfragen
  next
end function

function CreateNewFireball( Direction )
  ball.FireBall = new FireBall
  ball\x = Player\x
  ball\y = Player\y
  ball\speed = 5

 ;weitere initialisationen wie : schaden, feuerrichtung usw
end function


Hoffe das ist nicht allzuunverständlich, aber ich hab hier kein Blitz... Smile

grüße
http://bl4ckd0g.funpic.de
 

Magna

BeitragMi, Okt 06, 2004 14:58
Antworten mit Zitat
Benutzer-Profile anzeigen
Hi, danke für die schnellen antworten! Denke, jetzt hab ichs geschnallt!
Danke leutz!

Ciao, magna
 

Magna

BeitragMi, Okt 06, 2004 16:20
Antworten mit Zitat
Benutzer-Profile anzeigen
Habs doch noch nicht so ganz kapiert...
Hat nicht jemand einen ganzen code?
Würde mir sehr helfen.

Ciao, Magna
 

Magna

BeitragMi, Okt 06, 2004 19:55
Antworten mit Zitat
Benutzer-Profile anzeigen
Also ich bekomms nicht hin, dass der feuerball sich bewegt, ich kann irgendwie icht auf ihn zurückgreifen... Er erscheint zwar aber das wars dann... Question
Hat jemand Rat?

Ciao, Magna
 

David

BeitragMi, Okt 06, 2004 20:08
Antworten mit Zitat
Benutzer-Profile anzeigen
Hi!

Post mal deinen bisherigen Code!

grüße
http://bl4ckd0g.funpic.de
 

Magna

BeitragMi, Okt 06, 2004 21:33
Antworten mit Zitat
Benutzer-Profile anzeigen
Code: [AUSKLAPPEN]

Graphics3D 800,600
SetBuffer BackBuffer()

Type Feuerball
 Field x,y,sprite
End Type

;Globals
Global Grav#=0
Global Walk=0
Global Jump=0

;Licht
lit = CreateLight(1)
RotateEntity lit,0,90,0

;Camera
Global camera = CreateCamera()
;Types
Global PLAYER=1
Global SCENERY=2
;Collisions
Collisions PLAYER,SCENERY,2,2
;Meshs
Global MM=LoadAnimMesh("MegaStand.3ds") ;Animsrq 0
CreateMega()
;Environment
Global Env = CreateCube()
ScaleEntity Env,360,360,360
Global tex1=LoadTexture("Crete4.bmp")
EntityTexture Env, tex1
FlipMesh Env
EntityType Env, SCENERY
EntityRadius Env,1
plan=CreatePlane()
PositionEntity plan,0,-5,0
Global tex2=LoadTexture("Brick5.bmp")
ScaleTexture tex2,12,12
EntityTexture plan, tex2
EntityType plan,SCENERY
;Sounds
Global shot = LoadSound("Schuss.wav")
Global jmp = LoadSound("Jump.wav")
CreateEnvironment()
;MainLoop

While Not KeyHit(1)
If KeyHit(30)
 Jump(MM)
End If
Gravity(MM)
MoveMM()
SuperCam(camera,MM,.05,75,40,1,0)
RenderWorld
Text 0,FontHeight()*0,"Gravitation: "+Grav#
Text 0,FontHeight()*1,"Walk: "+Walk
Text 0,FontHeight()*2,"Jump: "+Jump
UpdateWorld

Flip
Wend

End

Function MoveMM()
If KeyDown(200) ;Move and Anim Vorwärts
 MoveEntity MM,0,0,-1
 If Walk=0 And Jump=0
  Animate MM,1,.5,2,4
  Walk=1
 End If
End If

If KeyDown(208)

End If

If KeyDown(203)
 TurnEntity MM, 0,2,0
End If

If KeyDown(205)
 TurnEntity MM, 0,-2,0
End If
   If KeyHit(56)   
       ;Hier soll die feuerball-create-function abgerufen werden
   EndIf
;Wenn nicht gedrückt!
If Not KeyDown(200)
 Walk=0
End If

If Not KeyDown(30)
 If Grav>0 Grav=0
End If

End Function


Function Gravity(n$)
If EntityCollided(n$,SCENERY)
 If Grav# < 0 And Walk=0
  Animate MM,3,1,0,3
  Jump=0
  Walk=0
  Grav=-0.1
 End If
 PositionEntity n$,EntityX(n$),EntityY(n$)-1.2,EntityZ(n$)
 Goto Fuck
End If
If Not EntityCollided(n$,SCENERY)
 If Grav#>-3
  Grav#=Grav#-0.11
 End If
End If
 TranslateEntity n$,0,Grav#,0
 .Fuck
End Function

Function Jump(n$)

If EntityCollided(n$,SCENERY)
 Grav#=3
 Jump=1
 Walk=0
 PlaySound jmp
 PositionEntity(n$,EntityX(n$),EntityY(n$)+2,EntityZ(n$))
 Animate MM,3,1,1,5
End If

End Function

Function CreateMega()
;Meshs
LoadAnimSeq(MM,"MegaJump.3ds") ;1
LoadAnimSeq(MM,"MegaWalk.3ds") ;2
LoadAnimSeq(MM,"MegaShot.3ds") ;3
;
EntityType MM, PLAYER
PositionEntity MM,0,60,20
ScaleEntity MM,0.2,0.2,0.2
EntityRadius MM, 1
End Function

Function SuperCam(cam,ent,cspeed#,dist#,hite#,xrot#,tilt#)

TFormPoint 0,hite#,dist#,ent,0

cx#=(TFormedX()-EntityX(cam))*cspeed#
cy#=(TFormedY()-EntityY(cam))*cspeed#
cz#=(TFormedZ()-EntityZ(cam))*cspeed#

TranslateEntity cam,cx,cy,cz
PointEntity cam,ent
RotateEntity cam,xrot#,EntityYaw(cam),tilt#

End Function

Function CreateEnvironment()
bloc1 = CreateCube()
ScaleEntity bloc1,20,2,70
PositionEntity bloc1, 10, -5, 100
EntityTexture bloc1,tex1
EntityType bloc1, SCENERY
RotateEntity bloc1,20,0,0

End Function


So, das ist das bisherige, die functions hab ich wieder gelöscht, weils nicht gefunzt hat,sorry.Also das erstellen des feuerballs usw...
Wo muss ich was einfügen, dass es klappt?
Also, wie gesagt, ich bin noch sehr unerfahren mit Types und so...

Danke

rambo256

BeitragMi, Okt 06, 2004 21:37
Antworten mit Zitat
Benutzer-Profile anzeigen
das:

Zitat:
function UpdateBalls()
foreach ball ...
;ballposition verändern
;ball zeichnen DrawImage( ball\img... )
;kollision mit diversen gegnern abfragen
next
end function


kommt in die Hauptschleife.


das.:

Code: [AUSKLAPPEN]
function CreateNewFireball( Direction )
  ball.FireBall = new FireBall
  ball\x = Player\x
  ball\y = Player\y
  ball\speed = 5

 ;weitere initialisationen wie : schaden, feuerrichtung usw
end function


nicht.
Diese Funktion rufst du auf Tastendruck = Feuertaste auf.

Das wars.
Asus F53z

Das Leben ist eine reine Konkatenation...
 

Magna

BeitragMi, Okt 06, 2004 21:40
Antworten mit Zitat
Benutzer-Profile anzeigen
Zitat:
function UpdateBalls()
foreach ball ...
;ballposition verändern
;ball zeichnen DrawImage( ball\img... )
;kollision mit diversen gegnern abfragen
next
end function


das ist glaub ich, dass was ich net so raffe...
wie ändere ich dann die position des balles (ich meine nicht von den befehlen her, nur wie sage ich BB was es tun soll) ???
Übrigens gehts hier um 3D, ich denke da nimmt man nen sprite, oder?

Magna

rambo256

BeitragMi, Okt 06, 2004 22:26
Antworten mit Zitat
Benutzer-Profile anzeigen
ja z.b.
Code: [AUSKLAPPEN]
ball_x = ball\x+ball\speed_x
ball_y = ball\y+ball\speed_Y
drawimage ball,ball\x,ball\y
Asus F53z

Das Leben ist eine reine Konkatenation...

Neue Antwort erstellen


Übersicht BlitzBasic Beginners-Corner

Gehe zu:

Powered by phpBB © 2001 - 2006, phpBB Group