Schuss in 3D welt erstellen?
Übersicht

blackmasterBetreff: Schuss in 3D welt erstellen? |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Hallo,
wisst ihr vieleicht wie man den schuss in 3D welt erstellt? also das macht man ja irgendwie mit Splines oder wie auch immer das heisst. Ich habs mal so gemacht: Code: [AUSKLAPPEN] ;Type für den schuss
Type schuss Field schuss_x Field schuss_y Field schuss_z# End Type Code: [AUSKLAPPEN] ;Schuss abfeuern
If MouseHit(1) Then zylinder = CreateCylinder(20) EndIf ;Alle schüsse abfragen For s.schuss = Each schuss schuss_z# = schuss_z# + 5.0 MoveEntity zylinder,s\schuss_x,s\schuss_y,schuss_z# Next das wird aber nix, könnt ihr mir vieleicht zeigen wie man richtige schüsse macht? Vielen Dank schonmal. Gruss Markus |
||
![]() |
Pdd |
![]() Antworten mit Zitat ![]() |
---|---|---|
Schau mal ein paar Threads vor dir!
Aber da du dir ja wenigstens ein bischen Gedanken gemacht hast will ich mal net so sein... Du musst deinem Type noch ein Field cube hinzufügen: ;Type für den schuss Type schuss Field schuss_x Field schuss_y Field schuss_z# Field cube End Type global s.schuss ;Schuss abfeuern If MouseHit(1) Then s = ne schuss s\cube = CreateCylinder(20) ; oder cube EndIf ;Alle schüsse abfragen For s.schuss = Each schuss schuss_z# = schuss_z# + 5.0 MoveEntity s\cube,s\schuss_x,s\schuss_y,schuss_z# Next |
||
Lieber Apfel als Birne. |
![]() |
sirokuhl |
![]() Antworten mit Zitat ![]() |
---|---|---|
die koordinatenvariablen brauchst du in b3d NICHT! Die Koordinaten werden automatisch abgespeichert, und könne mit den befehlen: entityx(), entityy() und entityz() herausgefunden werden.
wenn du nun einen schuss erstellst, dann setzt du ihn mit positionentity an seine startposition und drehst du ihn einfach in die richtung, in die er fliegen soll. dann bewegst du ihn mit moveentity, mit einem konstanten z-wert, einfach geradeaus. so wie du es gemacht hast, dass du bei moveenitity die absoluten koordinaten angegeben hast ist außerdem falsch, da moveentity ein entity nur in relativen koordinaten bewegt. willst du das entity aber absolut positionieren, dann brauchst du den befehl positionentity. edit: und so wie Pdd schon zeigt, musst du natürlich für jeden neuen schuss ein neues entity erstellen, bzw ein schon vorhandenes kopieren. |
||
- Zuletzt bearbeitet von sirokuhl am Mo, Nov 20, 2006 22:27, insgesamt 2-mal bearbeitet
![]() |
Pdd |
![]() Antworten mit Zitat ![]() |
---|---|---|
Hm stimmt, eigentlich musst du es so machen
Code: [AUSKLAPPEN] ;Type für den schuss Type schuss Field cube End Type global s.schuss ;Schuss abfeuern If MouseHit(1) Then s = ne schuss s\cube = CreateCylinder(20) ; oder cube EndIf ;Alle schüsse abfragen For s.schuss = Each schuss schuss_z# = schuss_z# + 5.0 MoveEntity s\cube, 0, 0, GESCHWINDIGKEIT Next |
||
Lieber Apfel als Birne. |
bruce85 |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
so würde ich das auch machen. | ||
AMD Athlon(tm) II X2 250, 8 GB DDR, MSI MSI 770-C45, GeForce GTS 250 |
blackmaster |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Cool vielen dank.
ich werde das gleich ausprobieren, ich schreib dann zurück wenn es funktioniert. Gruss Markus |
||
blackmaster |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Also es funktioniert sehr gut, aber wie bekomme ich die richtige richtung vom schuss hin?
wenn ich nach rechts schieße dann schießt er nach links u.s.w. hier mal der code: Code: [AUSKLAPPEN] ;Schuss abfeuern
If MouseHit(1) Then s.schuss = New schuss s\cube = CreateCylinder(80) ; oder cube ScaleEntity s\cube,10,50,10 s\schuss_x = EntityYaw(camera) s\schuss_y = EntityPitch(camera) EndIf ;Alle schüsse abfragen For s.schuss = Each schuss schuss_z# = schuss_z# + 5.0 MoveEntity s\cube,s\schuss_x,s\schuss_y,5.0 Next ich habe EntityYaw und EntityPitch genommen für die position, weiss jetzt net ob ich das so richtig gemacht habe. Danke euch schonmal. MFG Markus |
||
![]() |
Pdd |
![]() Antworten mit Zitat ![]() |
---|---|---|
Du musst es so machen: RotateEntity s\cube, EntityPitch(cam), EntityYaw(cam), EntityRoll(cam). Die Position muss so sein: PositionEntity EntityX(cam), EntityY(cam), EntityZ(cam) | ||
Lieber Apfel als Birne. |
blackmaster |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Klappt sehr gut.
Vielen Dank für deine Hilfe ![]() Gruss Markus |
||
UrmeliBetreff: Hallo |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Ich hab gerade das gleiche problem hab alles getestes auch den code hier nur irgendwie gehts net kann jemand vieleicht nochmal den ganzen code schreiben.
wär net. ![]() |
||
Akktuelles Projekt: Watergun
Fortschritt: ~27% Features: -Keine Waffengewalt -Erstelle selber Spielwelten mit einem eigenen editor -Spiele im Netztwerk gegen deine freunde _________________________ Infos auf [url] www.diegeheimen.de.vu [/url] |
![]() |
skey-z |
![]() Antworten mit Zitat ![]() |
---|---|---|
zeig doch erst mal deinen Code, dann kann man dir besser helfen, weil jeder Code ist anders aufgebaut. | ||
Awards:
Coffee's Monatswettbewerb Feb. 08: 1. Platz BAC#57: 2. Platz |
UrmeliBetreff: Hier :D |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Code: [AUSKLAPPEN] ; Menü Graphics 800,600,16,2 SetBuffer BackBuffer() Global font1 = LoadFont("Arial", 30, 1, 1, 0) SetFont font1 Repeat Text 400,100,"Spiel starten ",1,1 Text 400,200,"Highscore",1,1 Text 400,300,"Credits",1,1 Text 400,400,"Beenden",1,1 mausklick = MouseHit(1) If mausklick And Maus_Text_Kollision(400,100,"Spiel starten",1,1) Then Goto Startgame If mausklick And Maus_Text_Kollision(400,200,"Highscore",1,1) Then a = a If mausklick And Maus_Text_Kollision(400,300,"Credits",1,1) Then a=a If mausklick And Maus_Text_Kollision(400,400,"Beenden",1,1) Then End Flip:Cls Until KeyHit(1) .Startgame Graphics3D 1024,768,0,1 ;Einstellungen Text 0,0,"Einstellungen werden geladen" Global q = 1 frametimer = CreateTimer (40) Global piv = CreatePivot() Global cam = CreateCamera(piv) MoveEntity cam,0,2,0 EntityRadius piv,1 EntityType piv,2 CameraClsColor cam,0,100,255 Global light=CreateLight(1) PositionEntity light, 0, 2, 4 LightRange light, 50 ;Karte Text 0,0,"Map wird geladen" pl = CreatePlane() EntityColor pl,200,300,0 MoveEntity pl,0,-1,0 EntityType pl,1 c1 = CreateCube() MoveEntity c1,1,0,5 EntityColor c1,100,100,200 EntityType c1,1 c2 = CreateCube() MoveEntity c2,5,0,5 EntityColor c2,200,100,100 EntityType c2,1 c3 = CreateCube() MoveEntity c3,100,0,100 EntityColor c3,200,100,100 EntityType c3,1 ScaleEntity c3,100,10,10 ;Waffenladen Text 0,0,"Waffen werden geladen" f = LoadSprite ("ts.jpg",3,cam) PositionEntity f, 0,0,20 EntityOrder f, -1 Global w = LoadMesh ("ts4.3ds",cam) Global w1 = LoadMesh ("ts3.3ds",cam) ts4() ts3() ;Hauptschleife While Not KeyDown(1) ;Waffenwechsel If m > MouseZ() Then q = q + 1 ElseIf m < MouseZ() Then q = q - 1 End If m = MouseZ() If q > 2 Then q = 1 If q < 1 Then q = 2 If q = 1 Then HideEntity w1 ShowEntity w End If If q = 2 Then HideEntity w ShowEntity w1 End If ;Rest WaitTimer (frametimer) Move() UpdateWorld RenderWorld Flip Wend End ;Funktionen Function Move() mxs# = 0-MouseXSpeed()/4.0 TurnEntity piv,0,mxs#,0 mys#=MouseYSpeed()/4.0 MoveMouse GraphicsWidth()/2,GraphicsHeight()/2 TurnEntity cam,mys,0,0 If KeyDown(17) Then MoveEntity piv,0,-0.01,0.25 If KeyDown(31) Then MoveEntity piv,0,0.01,-0.25 If KeyDown(30) Then MoveEntity piv,-0.25,0,0 If KeyDown(32) Then MoveEntity piv,0.25,0,0 Collisions 2,1,2,2 End Function Function verkleinern() ScaleMesh w,0.9,0.9,0.9 ScaleMesh w,0.9,0.9,0.9 ScaleMesh w,0.9,0.9,0.9 ScaleMesh w,0.9,0.9,0.9 ScaleMesh w,0.9,0.9,0.9 ScaleMesh w,0.9,0.9,0.9 ScaleMesh w,0.9,0.9,0.9 ScaleMesh w,0.9,0.9,0.9 ScaleMesh w,0.9,0.9,0.9 ScaleMesh w,0.9,0.9,0.9 ScaleMesh w,0.9,0.9,0.9 ScaleMesh w,0.9,0.9,0.9 ScaleMesh w,0.9,0.9,0.9 ScaleMesh w,0.9,0.9,0.9 ScaleMesh w,0.9,0.9,0.9 ScaleMesh w,0.9,0.9,0.9 ScaleMesh w,0.9,0.9,0.9 End Function Function ts4() PositionEntity w1, 1,-0.5,2 TurnEntity w1,0,15,0 End Function Function ts3() PositionEntity w, 1,-1,2.2 TurnEntity w,0,200,0 verkleinern() End Function Function Maus_Text_Kollision(xPos,yPos,Text1$,AusrichtungX = 0,AusrichtungY = 0) Breite=StringWidth(Text1$) Hoehe =StringHeight(Text1$) If AusrichtungX Then xPos = xPos - Breite/2 If AusrichtungY Then yPos = yPos - Hoehe/2 If RectsOverlap(xPos,yPos,Breite,Hoehe,MouseX(),MouseY(),1,1) Then Rect xPos,yPos,Breite,Hoehe,0 Return True End If Return False End Function Ich hab den schusscode schon wiederrausgelöscht. Ich habs mit dem code in diesem beitrag versucht nur das hat net geklappt. |
||
Akktuelles Projekt: Watergun
Fortschritt: ~27% Features: -Keine Waffengewalt -Erstelle selber Spielwelten mit einem eigenen editor -Spiele im Netztwerk gegen deine freunde _________________________ Infos auf [url] www.diegeheimen.de.vu [/url] |
UrmeliBetreff: :::: |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Kann mir keiner einen kompleten und funktionierenden Schusscode geben?????? ![]() |
||
Akktuelles Projekt: Watergun
Fortschritt: ~27% Features: -Keine Waffengewalt -Erstelle selber Spielwelten mit einem eigenen editor -Spiele im Netztwerk gegen deine freunde _________________________ Infos auf [url] www.diegeheimen.de.vu [/url] |
![]() |
biggicekey |
![]() Antworten mit Zitat ![]() |
---|---|---|
kannst du denn nicht selbst nachdenken? oder suchen. englische bb seite etc.
prinzip ist einfach. schuss erstellen(type). jede schleife jeden schuss(type) um die gewünschte einheit bewegen. fertig ist der schuss. dann noch kollision prüfen und schüsse(types) wieder löschen. ich seh grad das der benötigte code sogar schon hier steht im thread. wenn du den bei dir nichtmal einbauen kannst dann such dir nen anderes hobby bzw. fang langsam an. ich hab nix gegen codekopieren aber das sollte man dann auch selbst können. |
||
#45 www.icekeyunlimited.de www.starcrusade.de
Gewinner BCC#17 !!! mit dotkiller Nothing more to register - you've cleaned us out![/size] |
UrmeliBetreff: ok ok |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Ich hab mir jetzt nen schusscode gebastelt klappt nur net ganz der schuss geht zwar hoch und runter je nachdem wie ich mich bewege aber er geht nicht seitlich.
Code: [AUSKLAPPEN] Type schuss Field schuss End Type Global s.schuss Function schuss() If MouseDown(1) Then s.schuss = New schuss s\schuss = LoadSprite ("w.jpg",3) EntityOrder s\schuss, -1 RotateEntity s\schuss, EntityPitch(cam), EntityYaw(cam), EntityRoll(cam) PositionEntity s\schuss, EntityX(piv), EntityY(piv), EntityZ(piv) End If For s = Each schuss MoveEntity s\schuss, 0,0,1 Next End Function wär net wenn mir jemand helfen kann. |
||
Akktuelles Projekt: Watergun
Fortschritt: ~27% Features: -Keine Waffengewalt -Erstelle selber Spielwelten mit einem eigenen editor -Spiele im Netztwerk gegen deine freunde _________________________ Infos auf [url] www.diegeheimen.de.vu [/url] |
![]() |
Tankbuster |
![]() Antworten mit Zitat ![]() |
---|---|---|
Zitat: RotateEntity s\schuss, EntityPitch(cam), EntityYaw(cam), EntityRoll(cam)
PositionEntity s\schuss, EntityX(piv), EntityY(piv), EntityZ(piv) Muss in der 2. Zeile net anstatt piv cam hin, ich weiß ja nicht, ob der piv genau auf der cam position ist, aber wenn der piv davor ist, dann rotiert der Schuss zwar, aber fängt beim piv an, der dann nicht mehr im sichtbereich ist. und ich würde nicht immer für jeden Schuss ein neues Sprite laden, sondern ein "Hauptsprite" kopieren. |
||
Twitter
Download Jewel Snake! Windows|Android |
UrmeliBetreff: :D |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Wenn ich das piv in cam ändere geht der schuss immer von der mitte der karte los, denn ich bewege das piv und rotiere die cam. | ||
Akktuelles Projekt: Watergun
Fortschritt: ~27% Features: -Keine Waffengewalt -Erstelle selber Spielwelten mit einem eigenen editor -Spiele im Netztwerk gegen deine freunde _________________________ Infos auf [url] www.diegeheimen.de.vu [/url] |
![]() |
Tankbuster |
![]() Antworten mit Zitat ![]() |
---|---|---|
Achso!
Das wusste ich net (woher auch). Aber es müsste theoretisch gehn. Der Schuss wird erzeugt, und an die Stelle deines Pivots geschoben. Dann wird er rotiert wie die Kamera im Moment ist. Der Code macht keinen Fehler. Da hast du sicherlich irgendwas vergesswn. Wenn du mit der Cam z.B. nach oben guckst, siehst du den Pivot (lol sowieso unsichtbar^^) nicht mehr. Und den Schuss deshalb auch net. Kannst du den ganzen Code posten??? dann wüsste ich sofort wo der Fehler ist ![]() |
||
Twitter
Download Jewel Snake! Windows|Android |
UrmeliBetreff: :D |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Hier der komplette code:
Code: [AUSKLAPPEN] ; Menü Graphics 800,600,16,2 SetBuffer BackBuffer() Global font1 = LoadFont("Arial", 30, 1, 1, 0) SetFont font1 Repeat Text 400,100,"Spiel starten ",1,1 Text 400,200,"Highscore",1,1 Text 400,300,"Credits",1,1 Text 400,400,"Beenden",1,1 mausklick = MouseHit(1) If mausklick And Maus_Text_Kollision(400,100,"Spiel starten",1,1) Then Goto Startgame If mausklick And Maus_Text_Kollision(400,200,"Highscore",1,1) Then a = a If mausklick And Maus_Text_Kollision(400,300,"Credits",1,1) Then a=a If mausklick And Maus_Text_Kollision(400,400,"Beenden",1,1) Then End Flip:Cls If KeyHit(1) Then End Until KeyHit(1) .Startgame Graphics3D 1024,768,0,1 ;Einstellungen Text 0,0,"Einstellungen werden geladen" Global q = 1 frametimer = CreateTimer (40) Global piv = CreatePivot() Global cam = CreateCamera(piv) MoveEntity cam,0,2,0 EntityRadius piv,1 EntityType piv,2 CameraClsColor cam,0,100,255 Global light=CreateLight(1) PositionEntity light, 0, 2, 4 LightRange light, 50 ;Karte Text 0,0,"Map wird geladen" pl = CreatePlane() EntityColor pl,200,300,0 MoveEntity pl,0,-1,0 EntityType pl,1 c1 = CreateCube() MoveEntity c1,1,0,5 EntityColor c1,100,100,200 EntityType c1,1 c2 = CreateCube() MoveEntity c2,5,0,5 EntityColor c2,200,100,100 EntityType c2,1 c3 = CreateCube() MoveEntity c3,100,0,100 EntityColor c3,200,100,100 EntityType c3,1 ScaleEntity c3,100,10,10 ;Waffenladen Text 0,0,"Waffen werden geladen" f = LoadSprite ("ts.jpg",3,cam) PositionEntity f, 0,0,20 EntityOrder f, -1 Global w = LoadMesh ("ts4.3ds",cam) Global w1 = LoadMesh ("ts3.3ds",cam) ts4() ts3() Type schuss Field schuss End Type Global s.schuss ;Hauptschleife While Not KeyDown(1) ;Waffenwechsel If m > MouseZ() Then q = q + 1 ElseIf m < MouseZ() Then q = q - 1 End If m = MouseZ() If q > 2 Then q = 1 If q < 1 Then q = 2 If q = 1 Then HideEntity w1 ShowEntity w End If If q = 2 Then HideEntity w ShowEntity w1 End If ;Rest WaitTimer (frametimer) Move() schuss() UpdateWorld RenderWorld Flip Wend End ;Funktionen Function Move() mxs# = 0-MouseXSpeed()/4.0 TurnEntity piv,0,mxs#,0 mys#=MouseYSpeed()/4.0 MoveMouse GraphicsWidth()/2,GraphicsHeight()/2 TurnEntity cam,mys,0,0 If KeyDown(17) Then MoveEntity piv,0,-0.01,0.25 If KeyDown(31) Then MoveEntity piv,0,0.01,-0.25 If KeyDown(30) Then MoveEntity piv,-0.25,0,0 If KeyDown(32) Then MoveEntity piv,0.25,0,0 Collisions 2,1,2,2 End Function Function verkleinern() ScaleMesh w,0.9,0.9,0.9 ScaleMesh w,0.9,0.9,0.9 ScaleMesh w,0.9,0.9,0.9 ScaleMesh w,0.9,0.9,0.9 ScaleMesh w,0.9,0.9,0.9 ScaleMesh w,0.9,0.9,0.9 ScaleMesh w,0.9,0.9,0.9 ScaleMesh w,0.9,0.9,0.9 ScaleMesh w,0.9,0.9,0.9 ScaleMesh w,0.9,0.9,0.9 ScaleMesh w,0.9,0.9,0.9 ScaleMesh w,0.9,0.9,0.9 ScaleMesh w,0.9,0.9,0.9 ScaleMesh w,0.9,0.9,0.9 ScaleMesh w,0.9,0.9,0.9 ScaleMesh w,0.9,0.9,0.9 ScaleMesh w,0.9,0.9,0.9 End Function Function ts4() PositionEntity w1, 1,-0.5,2 TurnEntity w1,0,15,0 End Function Function ts3() PositionEntity w, 1,-1,2.2 TurnEntity w,0,200,0 verkleinern() End Function Function Maus_Text_Kollision(xPos,yPos,Text1$,AusrichtungX = 0,AusrichtungY = 0) Breite=StringWidth(Text1$) Hoehe =StringHeight(Text1$) If AusrichtungX Then xPos = xPos - Breite/2 If AusrichtungY Then yPos = yPos - Hoehe/2 If RectsOverlap(xPos,yPos,Breite,Hoehe,MouseX(),MouseY(),1,1) Then Rect xPos,yPos,Breite,Hoehe,0 Return True End If Return False End Function Function schuss() If MouseDown(1) Then s.schuss = New schuss s\schuss = LoadSprite ("w.jpg",4) EntityOrder s\schuss, -1 RotateEntity s\schuss, EntityPitch(cam), EntityYaw(cam), EntityRoll(cam) PositionEntity s\schuss, EntityX(piv), EntityY(piv), EntityZ(piv) End If For s = Each schuss MoveEntity s\schuss, 0,0,1 Next End Function Kannst du mir sagen wie ich das sprite kopier ohne neuladen? |
||
Akktuelles Projekt: Watergun
Fortschritt: ~27% Features: -Keine Waffengewalt -Erstelle selber Spielwelten mit einem eigenen editor -Spiele im Netztwerk gegen deine freunde _________________________ Infos auf [url] www.diegeheimen.de.vu [/url] |
![]() |
Black Spider |
![]() Antworten mit Zitat ![]() |
---|---|---|
![]() Hier, das vor die Schleife packen: Code: [AUSKLAPPEN] Type shot
Field obj Field time# End Type Und das in die Schleife: Code: [AUSKLAPPEN] If MouseDown(1) s.shot = New shot s\obj = CreateCube(cam) ScaleEntity s\obj,.2,.2,.2 EntityColor s\obj,0,0,0 EntityParent s\obj,0 s\time# = 100 End If For s.shot = Each shot If s\time<=0 Then FreeEntity s\obj Delete s Else MoveEntity s\obj,0,0,1 s\time = s\time - .5 End If Next Das ist ein Codeansatz, das heisst es müssen noch sachen wie Timer oder Magazine eingebaut werden, ich hoffe so schlau bist du selbst. Und für den Sprite: Code: [AUSKLAPPEN] Global schuss = LoadSprite(...)
; dann im Schusscode: s\obj = CopyEntity(schuss,cam) EntityParent s\obj,0 |
||
Coming soon:
http://img132.imageshack.us/im...im2ab6.gif |
Übersicht


Powered by phpBB © 2001 - 2006, phpBB Group