[B3D] Schüsse nach Maus rotieren
Übersicht

![]() |
N0XBetreff: [B3D] Schüsse nach Maus rotieren |
![]() Antworten mit Zitat ![]() |
---|---|---|
Hey!
Ich möchte, wenn ich auf die linke Maustaste klicke, einen Schuss abfeuern der auch direkt aus der Mündung der Waffe kommt und in die richtige Richtung fliegt. (Daran haperts bei mir ![]() Ich weiß auch nicht so genau ob es denn sinnvoll ist das Geschoss überhaupt mit einem Modell anzeigen zu lassen etc. Hier der Code-Ausschnitt: Code: [AUSKLAPPEN] Const PLY=1,TER=2
Global speed#=2 Global schuss_speed# = 5.0 Type schuss Field x#,y#,z# Field mesh End Type ;---------------------------------; timer = CreateTimer(60) Graphics3D 1680,1050,32,1 SetBuffer BackBuffer() Global piv = CreatePivot():PositionEntity piv,-500,22,0 Global cam = CreateCamera(piv) Global cub = LoadMesh("weapon_1.3ds",cam) PositionEntity cub,8,-5,20 Global bullet = LoadMesh("bullet.3ds") HideEntity bullet light = CreateLight() map = LoadMesh("map_1.3ds") EntityType cam,PLY EntityType map,TER Collisions PLY,TER,2,2 While Not KeyHit(1) WaitTimer(timer) move() mouse() shot() TranslateEntity cam,0,-1,0 ;---------------------; Flip 0 UpdateWorld() RenderWorld() Text 0,0,EntityX(cam) Text 0,12,EntityY(cam) Text 0,24,EntityZ(cam) Wend End Function move() If KeyDown(17) Then MoveEntity cam,0,0,speed# EndIf If KeyDown(31) Then MoveEntity cam,0,0,-speed# EndIf If KeyDown(30) Then MoveEntity cam,-speed#,0,0 EndIf If KeyDown(32) Then MoveEntity cam,speed#,0,0 EndIf End Function Function mouse() dx#=(GraphicsWidth()/2-MouseX())*0.2 dy#=(GraphicsHeight()/2-MouseY())*0.2 TurnEntity cam,-dy,dx,0 RotateEntity cam,EntityPitch(cam,1),EntityYaw(cam,1),0,1 MoveMouse GraphicsWidth()/2, GraphicsHeight()/2 End Function Function shot() Local mh = MouseHit(1) If mh Then s.schuss = New schuss s\mesh = CopyEntity(bullet) s\x# = EntityX(cam)-470 s\y# = EntityY(cam)+22 s\z# = EntityZ(cam)+0 EndIf For s.schuss = Each schuss s\z# = s\z# + schuss_speed# PositionEntity s\mesh,s\x#,s\y#,s\z# TurnEntity s\mesh,-dy,dx,0 Next End Function Mfg, N0X |
||
Projekte: |Tibario| http://www.blitzforum.de/worklogs/325/ | 5% |
![]() |
HackerBoyZ |
![]() Antworten mit Zitat ![]() |
---|---|---|
benutze mal die suche... stichwort "atan2", gabs schon sehr sehr oft die frage. | ||
![]() |
N0X |
![]() Antworten mit Zitat ![]() |
---|---|---|
Hab mir jetzt alle Threads durchgelesen, es wird immer über das drehen von Bildern geredet, aber im 3D Bereich ist da fast nichts!
Wie kann ich denn nun meine Patrone so schießen, dass sie in die richtige Richtung fliegt? Mfg, N0X ![]() |
||
Projekte: |Tibario| http://www.blitzforum.de/worklogs/325/ | 5% |
![]() |
Silver_Knee |
![]() Antworten mit Zitat ![]() |
---|---|---|
Also du kannst mit CameraPick![]() ![]() |
||
![]() |
N0X |
![]() Antworten mit Zitat ![]() |
---|---|---|
Habe eine noch einfachere Lösung gefunden, aber
1. wird der Schuss nach dem Abfeuern noch mitbewegt 2. die Rotierung klappt noch nicht ganz Was habe ich vergessen (bzw. falsch gemacht)? Mfg, N0X Hier die Funktion: Code: [AUSKLAPPEN] Function shot()
Local mh = MouseHit(1) If KeyHit(59) Then s.schuss = New schuss s\mesh = CopyEntity(bullet) PositionEntity s\mesh,EntityX(cam)-488,EntityY(cam)+19,EntityZ(cam)-5 RotateEntity s\mesh,EntityPitch(cam),EntityYaw(cam),0 EndIf For s.schuss = Each schuss MoveEntity s\mesh,0,0,schuss_speed# Next End Function |
||
Projekte: |Tibario| http://www.blitzforum.de/worklogs/325/ | 5% |
![]() |
XeresModerator |
![]() Antworten mit Zitat ![]() |
---|---|---|
"mitbewegt"? Dann hat bullet ein Parent?
Wie immer: "klappt nicht" ist nicht unbedingt aussagekräftig... |
||
Win10 Prof.(x64)/Ubuntu 16.04|CPU 4x3Ghz (Intel i5-4590S)|RAM 8 GB|GeForce GTX 960
Wie man Fragen richtig stellt || "Es geht nicht" || Video-Tutorial: Sinus & Cosinus THERE IS NO FAIR. THERE IS NO JUSTICE. THERE IS JUST ME. (Death, Discworld) |
![]() |
N0X |
![]() Antworten mit Zitat ![]() |
---|---|---|
Erstes Problem hat sich erledigt. (cam hatte einen Parent)
Zweites Problem bleibt, wenn ich bei der Positionierung von "s\mesh", bei EntityX() noch ein +5 oder ähnliches dranhänge. Warum? Mfg, N0X |
||
Projekte: |Tibario| http://www.blitzforum.de/worklogs/325/ | 5% |
![]() |
XeresModerator |
![]() Antworten mit Zitat ![]() |
---|---|---|
Welches Problem? Was soll passieren? | ||
Win10 Prof.(x64)/Ubuntu 16.04|CPU 4x3Ghz (Intel i5-4590S)|RAM 8 GB|GeForce GTX 960
Wie man Fragen richtig stellt || "Es geht nicht" || Video-Tutorial: Sinus & Cosinus THERE IS NO FAIR. THERE IS NO JUSTICE. THERE IS JUST ME. (Death, Discworld) |
![]() |
N0X |
![]() Antworten mit Zitat ![]() |
---|---|---|
![]() Die Patrone (bullet, s\mesh) soll aus dem Gewehrlauf kommen. (Dieser ist an Cam gehängt und auf Koordinaten: 8,-5,20) Wenn ich die Patrone auf "EntityX(cam), EntityY(cam), EntityZ(cam)" positioniere, kommt der Schuss ja logischerweise aus mir selbst. Jetzt soll der schuss aber aus dem Gewehr kommen, wenn ich die Koordinaten vom Gewehr von der der Camera subtrahiere, ist wenn ich die Maus nicht bewege alles ok, aber wenn ich sie nach links rechts oben unten bewege verschieben sich die Schusskoordinaten anders als die Maus. (d.h. sie kommen nicht mehr aus dem Gewehr) Warum und wie kann ich das lösen? Mfg, N0X P.S.: Besser? ![]() |
||
Projekte: |Tibario| http://www.blitzforum.de/worklogs/325/ | 5% |
![]() |
XeresModerator |
![]() Antworten mit Zitat ![]() |
---|---|---|
Jau, das ist besser.
Warum nimmst du nicht direkt die Gewehr-Koordinaten? Wenn du dich im 3D Raum drehst, kannst du nicht mit simplen Differenzen arbeiten, sondern müsstest mit sinus/cosinus die Position berechnen (ich empfehle dazu eine Skizze ![]() Die meisten Shooter werden auch nie so genau sein, die Kugeln tatsächlich aus dem Lauf der Waffe feuern zu lassen - das geht auch immer gradlinig vom Spielermittelpunkt (etwa Mitte das Kopfes) aus. |
||
Win10 Prof.(x64)/Ubuntu 16.04|CPU 4x3Ghz (Intel i5-4590S)|RAM 8 GB|GeForce GTX 960
Wie man Fragen richtig stellt || "Es geht nicht" || Video-Tutorial: Sinus & Cosinus THERE IS NO FAIR. THERE IS NO JUSTICE. THERE IS JUST ME. (Death, Discworld) |
![]() |
N0X |
![]() Antworten mit Zitat ![]() |
---|---|---|
Hm, aber das Gewehr klebt bei mir ja an der Cam, also verändern sich nur die Koordinaten von der Cam.
Und die Koordinaten-Abweichungen sind echt groß, wenn ich die Maus bewege. Hier sonst mal die Maus-Funktion: Code: [AUSKLAPPEN] Function mouse()
dx#=(GraphicsWidth()/2-MouseX())*0.2 dy#=(GraphicsHeight()/2-MouseY())*0.2 TurnEntity cam,-dy,dx,0 RotateEntity cam,EntityPitch(cam,1),EntityYaw(cam,1),0,1 MoveMouse GraphicsWidth()/2, GraphicsHeight()/2 End Function |
||
Projekte: |Tibario| http://www.blitzforum.de/worklogs/325/ | 5% |
![]() |
XeresModerator |
![]() Antworten mit Zitat ![]() |
---|---|---|
Code: [AUSKLAPPEN] RotateEntity cam,EntityPitch(cam,1),EntityYaw(cam,1),0,1 Was hat das für einen Sinn? Du drehst die Kamera auf den Winkel der Kamera.
Wo befindet sich denn die Waffe? |
||
Win10 Prof.(x64)/Ubuntu 16.04|CPU 4x3Ghz (Intel i5-4590S)|RAM 8 GB|GeForce GTX 960
Wie man Fragen richtig stellt || "Es geht nicht" || Video-Tutorial: Sinus & Cosinus THERE IS NO FAIR. THERE IS NO JUSTICE. THERE IS JUST ME. (Death, Discworld) |
![]() |
N0X |
![]() Antworten mit Zitat ![]() |
---|---|---|
Ganz ehrlich, ich weiß es nicht. Ich habe diese Funktion einfach kopiert. ![]() Aber ohne diese Zeile wäre die Kamera schief. ![]() Habe ich kopiert, weil ich nur Mausdrehungen mit Winkelbegrenzungen programmieren kann. Diese hat keine. ![]() //EDIT: Winkelbegrenzung? Was red ich da... |
||
Projekte: |Tibario| http://www.blitzforum.de/worklogs/325/ | 5% |
![]() |
Midimaster |
![]() Antworten mit Zitat ![]() |
---|---|---|
also ich mach das immer ganz simpel:
der Schuss wird als Child des Gewehrs createt. Dann wird er ein wenig in Richtung z bewegt, dann löse ich die Parent/Child-Verbindung zwischen Gewehr und Schuss. Ab da brauche ich den schuss nur noch in Z-Richtung zu bewegen. Er schießt 100% dahin wo das Gewehr gezeigt hatte. Geht das in diesem Fall bei Nox nicht auch? |
||
![]() |
N0X |
![]() Antworten mit Zitat ![]() |
---|---|---|
Wie löst man denn die Child-Parent Verbindung wieder auf? | ||
Projekte: |Tibario| http://www.blitzforum.de/worklogs/325/ | 5% |
![]() |
count-doku |
![]() Antworten mit Zitat ![]() |
---|---|---|
EntityParent![]() mfg, count-doku |
||
Übersicht


Powered by phpBB © 2001 - 2006, phpBB Group