Werfen mit Wurfparabel in Blitz3D
Übersicht

![]() |
Black SpiderBetreff: Werfen mit Wurfparabel in Blitz3D |
![]() Antworten mit Zitat ![]() |
---|---|---|
Hey Leute,
hab n echtes problem was den Code fürs werfen angeht. Also man hat sein kleines Objekt, was man hält und wenn man die Taste über STRG drückt, dann soll man es werfen können - funzt nicht. BlitzBasic: [AUSKLAPPEN]
Hab im alten Physikbuch meines Vaters nachgeguckt, und mir den Stoff besorgt den ich brauchte (bin selber erst inner 8. Klasse ![]() für die Physiker unter euch: f\beschleunigung = V0 (beschleunigung) f\winkel = winkel alpha f\X = (V0)x = V0 Cos(alpha) f\Y = (Vo)y = Vo Sin(alpha) eb = Erdbeschleunigung = 9.81s² Bitte Helft mir !!!! |
||
Coming soon:
http://img132.imageshack.us/im...im2ab6.gif |
BIG BUG |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Brrr, baue einfach Gravitation in Dein Game ein und schwubbdiewubb hast Du eine physikalisch korrekte Flugbahn. Such mal nach "Sprung" hier im Forum, da sollten genügend Beispielcodes rauskommen. | ||
B3D-Exporter für Cinema4D!(V1.4)
MD2-Exporter für Cinema4D!(final) |
![]() |
Black Spider |
![]() Antworten mit Zitat ![]() |
---|---|---|
naja, allerdings wollte ich, dass das ding nach der SinusKurve fliegt (und gravitation ist im Game! Komme hier einfach nicht weiter...)
Vll hab ich einfach n Brett vorm Kopf, aber kann man mir trotzdem helfen !? |
||
Coming soon:
http://img132.imageshack.us/im...im2ab6.gif |
![]() |
Markus2 |
![]() Antworten mit Zitat ![]() |
---|---|---|
Sowas habe ich noch irgendwo auf Platte ,
muß ich mal heute Abend raus suchen ![]() |
||
![]() |
Black Spider |
![]() Antworten mit Zitat ![]() |
---|---|---|
jaa, wär cool ! | ||
Coming soon:
http://img132.imageshack.us/im...im2ab6.gif |
![]() |
Markus2 |
![]() Antworten mit Zitat ![]() |
---|---|---|
Oh,hatte ich schon wieder vergessen ![]() BB3D einfach auf Würfel klicken Code: [AUSKLAPPEN] Graphics3D 640,480,16,0 SetBuffer BackBuffer() AppTitle " Steine werfen" Global cam=CreateCamera() CameraRange cam,1,10000 ;CameraClsMode cam,0,True light=CreateLight() PositionEntity cam,0,0,-50 Global ziel=CreateCube() EntityColor ziel,255,255,255 ScaleMesh ziel,0.5,0.5,0.5 ScaleMesh ziel,10,10,10 EntityType ziel,2 EntityPickMode ziel,2 Global stein=CreateSphere(8) ScaleMesh stein,0.5,0.5,0.5 ScaleMesh stein,10,10,10 EntityType stein,1 EntityRadius stein,5 HideEntity stein Type SteinType Field Entity Field xs# ;Stein Start Field ys# Field zs# Field xe# ;Ziel position Field ye# Field ze# Field wi# Field ws# Field st# Field dy# Field dz# Field l# ;Flugbahn länge Field treffer Field count Field blow# Field sollweg End Type Global cStein.SteinType ;----------------------------------------------------- Collisions 1,2,2,2 ;stein mit ziel als sphere to polygon ;----------------------------------------------------- While Not KeyHit(1) If MouseHit(1) Then CameraPick cam,MouseX(),MouseY() pe=PickedEntity() If pe Then SteinWerfen Rnd(-50,50),EntityY(cam),EntityZ(cam)+20,pe EndIf If MouseHit(2) Then PositionEntity ziel,Rnd(-50,50),Rnd(150,-150),Rnd(50,500) EndIf SteineUpdaten UpdateWorld RenderWorld Text 0,0,"Maustaste 1 = Werfen , 2 = Ziel bewegen" Flip Wend End ;----------------------------------------------------- Function SteinWerfen(xs#,ys#,zs#,ZielEntity) Local dx#,dy#,dz# cStein=New SteinType cStein\Entity=CopyEntity(Stein) EntityColor cStein\Entity,Rnd(64,200),Rnd(64,200),Rnd(64,200) cStein\wi=-90 ;-90 bis 90 = 180 cStein\ws=180 cStein\st=4 cStein\xs=xs cStein\ys=ys cStein\zs=zs cStein\xe=EntityX(ZielEntity) cStein\ye=EntityY(ZielEntity) cStein\ze=EntityZ(ZielEntity) cStein\dy=0 cStein\dz=0 cStein\treffer=False cStein\count=100 cStein\blow=1 cStein\sollweg=False dx=cStein\xe - cStein\xs dy=cStein\ye - cStein\ys dz=cStein\ze - cStein\zs cStein\l=Sqr(dx*dx+dy*dy+dz*dz)* (Pi/(360 / cStein\ws)) ;das sollte die Flugbahnlänge ergeben !? PositionEntity cStein\Entity,xs,ys,zs PointEntity cStein\Entity,ZielEntity ResetEntity cStein\Entity End Function ;----------------------------------------------------- Function SteineUpdaten() For cStein = Each SteinType If cStein\treffer=False Then Local winkelvonbis#=cStein\ws / cStein\st cStein\dy= (-Sin(cStein\wi)*cStein\l) / winkelvonbis/2 ;bei /2 ist z.B. die max. Flughöhe = der Flugbahnlänge zum Ziel /2 cStein\dz= ( Cos(cStein\wi)*cStein\l) / winkelvonbis MoveEntity cStein\Entity,0,cStein\dy,cStein\dz If CountCollisions(cStein\Entity)>0 Then cStein\treffer=True EndIf If cStein\treffer=True Then cStein\blow=cStein\blow+0.025 ScaleEntity cStein\Entity,cStein\blow,cStein\blow,cStein\blow cStein\count=cStein\count-1 If cStein\count<=0 Then cStein\sollweg=True Else cStein\wi=cStein\wi+cStein\st If cStein\wi>90 Then cStein\sollweg=True EndIf If cStein\sollweg=True Then SteinWeg cStein EndIf Next End Function ;----------------------------------------------------- Function SteinWeg(xStein.SteinType) FreeEntity xStein\Entity Delete xStein End Function ;----------------------------------------------------- Function R2#(x#) ;Runden Return Int(x#*100.0)/100.0 End Function ;----------------------------------------------------- |
||
![]() |
Black Spider |
![]() Antworten mit Zitat ![]() |
---|---|---|
Danke! Doch bei mir läuft das noch nicht ganz so glat... der Stein verschwindet einfach...
Code: [AUSKLAPPEN] Global unsichtbaresZielobjekt =CreateCube() EntityParent unsichtbaresZielobjekt, Piv PositionEntity unsichtbaresZielobjekt,0,0,90 Type Flint Field obj Field status Field wurf Field eX, eY, eZ Field wi, ws, st Field dy, dz, flugl# End Type For fs = 0 To 12 Local dx#, dy#, dz# f.Flint = New Flint f\obj = CopyEntity(Feuerstein) f\status = 0 f\wurf = 0 f\wi = -90 f\ws = 180 f\st = 4 f\eX = EntityX(unsichtbareszielobjekt) f\eY = EntityY(unsichtbareszielobjekt) f\eZ = EntityZ(unsichtbareszielobjekt) f\dy = 0 f\dz = 0 dx# = f\eX - (EntityX(Piv)-13) dy# = f\ey - (EntityY(piv)-10) dz# = f\eZ - (EntityZ(piv)+15) f\flugl=Sqr(dx*dx+dy*dy+dz*dz)* (Pi/(360 / f\ws)) PositionEntity f\obj,Rnd(4000, 15000),-83,Rnd(1000, 4000) ResetEntity f\obj Next in einer Schleife wird dann das hier abgespielt: Code: [AUSKLAPPEN] ;--- Wenn der Feuerstein gehalten wird --- If f\status = 1 If f\wurf = 0 TurnEntity f\obj,.31,.31,.31 End If If KeyHit(42) Then f\wurf = 1 PointEntity f\obj,unsichtbaresZielObjekt ; wurf(f) End If If MouseHit(2) f\status = 0 EntityParent f\obj,0 RotateEntity f\obj,0,0,0 ScaleEntity f\obj,7,7,7 EntityType f\obj,type_objekte EndIf End If If Not(EntityCollided(f\obj, type_land)) Then If f\Status = 0 Then s= s + 1 t = s*s eb = -9.81*t TranslateEntity f\obj,0,eb,0 End If End If ;-------im wurf-------------------- If f\wurf = 1 If CountCollisions(f\obj) < 1 Then Local wvb = f\ws / f\st f\dy = (-Sin(f\wi)*f\flugl) / wvb/2 f\dz = ( Cos(f\wi)*f\flugl) / wvb MoveEntity f\obj,0,f\dy,f\dz End If End If ;------------------------- kannst du mir da helfen!? Der Stein wird bereits gehalten, ist an den Pivot geheftet, und wenn man ihn werfen soll, dann verschwindet er einfach ! Warum !? |
||
Coming soon:
http://img132.imageshack.us/im...im2ab6.gif |
![]() |
Markus2 |
![]() Antworten mit Zitat ![]() |
---|---|---|
Würde den Stein nicht an nen Pivot hängen sondern vom
Pivot nur Pos. und Winkel übernehmen . Du hast vieleicht nen Problem mit relativen Positionen und ner absoluten (Global) |
||
![]() |
Black Spider |
![]() Antworten mit Zitat ![]() |
---|---|---|
der EntityParent eintrag wird ja gleöscht, und das Objekt Aktualsiert wenn die Taste fürs werfen gedrückt wird...
bin echt ratlos, aber danke für deine Hilfe! |
||
Coming soon:
http://img132.imageshack.us/im...im2ab6.gif |
![]() |
Markus2 |
![]() Antworten mit Zitat ![]() |
---|---|---|
Jo,
zur Not gibt es noch DebugLog ![]() |
||
Übersicht


Powered by phpBB © 2001 - 2006, phpBB Group