Aktuelle Zeit: 26.05.2013 02:08

Alle Zeiten sind UTC + 1 Stunde [ Sommerzeit ]




Ein neues Thema erstellen Auf das Thema antworten  [ 33 Beiträge ]  Gehe zu Seite Vorherige  1, 2, 3, 4  Nächste
Autor Nachricht
 Betreff des Beitrags:
BeitragVerfasst: 25.07.2008 15:27 
Offline

Registriert: 10.11.2004 03:22
kommt drauf an, wie dein koordinatensystem orientiert ist.
ist denn jetzt die Z achse senkrecht oder die Y?
das kann man nämlich unterschiedlich machen und unterscheidet sich von engine zu engine.

also, wenn hier jetzt Z senkrecht ist:
Alpha = CamRotX
Beta = CamRotY
Speed = Beweg

X = (Cos(Alpha)) * Speed * Factor
Y = (Sin(Alpha)) * Speed * Factor

weil Alpha der Drehwinkel in der ebene ist, und x und y in der Ebene liegen.

Factor ist kleiner als 1, um soviel musst du Speed nochmal kleiner machen,
weil du brauchst nicht die länge des ganzen Vertors Speed,
sondern nur die Länge seines "Schattens", also seiner abbildung auf die Ebene.
(ist aber eigentlich schon vernachlässigbar, ist der schuss halt ein bissel schneller)

und mit Z müßtest du dann eigentlich schon richtig liegen...

aber ich bin mir auch nicht wirklich sicher, ob da jetzt irgendwo ein vorzeichen verdreht ist oder was 90 falsch liegt,
aber grundsätzlich ist das schon so.

_________________
... machts gut und danke für den fisch ...


Nach oben
 Profil  
 
 Betreff des Beitrags: Orientirung
BeitragVerfasst: 25.07.2008 15:35 
Offline
Benutzeravatar

Registriert: 01.01.2008 02:02
Wohnort: Fulda
die Z Achse ist in die tiefe orientirt also

X = Breit
Y = Hohe
Z = Tiefe
ich use die OGRE Engine , ich denke mal das die nicht greade für soetwas geeignet ist , aber bei der kenne ich wenigstens die befele , wen ich jetzt eine neue engine lernen müsste , das würde dauern , aber ich glaube das ich das verstanden habe , habe probeweise in echt geübt, habe papir kölchen in den papirkorb geworfen , unddabe erst nach den winkeln gekuckt , ich glaube das habe ich verstanden , danke danke für die hilfe , PS : bin ab 6 pm nur noch 1 mal täglich zu erreichen , bin bei freund , habe daheim kein inet

_________________
Wenn sie weich werden bringt Pandora sie um und scheisst sie aus bevor sie irgend etwas merken.


Nach oben
 Profil  
 
 Betreff des Beitrags: Re: Thanks
BeitragVerfasst: 25.07.2008 15:47 
Offline

Registriert: 14.04.2007 16:48
Wohnort: Wien Umgebung
kob hat geschrieben:
Danke jetzt habe ich das glaude ich geraft also :

Alpha = CamRotX
Beta = CamRotY
Speed = Beweg

X = (Cos(ALpha)) * Speed
Y = (Sin(Beta)) * Speed

bei z bin ich mir nicht sicher und überhaupt :oops:

Z = (Cos(beta)) * Speed


Nein. du hast das falsch verstanden.

1. |v| heißt "betrag von Vektor v"
Den Betrag ermittelst du mit dem pythagoreischen Lehrsatz.

2. Bei mir hieß |v|2D, den "2D Betrag von Vektor v"
-> nur x und y

3. Das ganze sieht dann so aus:

Alpha = CamRotX
Beta = CamRotY
Speed = Beweg

Es sieht so aus als würde bei dir die X-Achse nach oben zeigen und die Y-Achse links oder rechts...
also...

X = Cos(beta) * Speed

_2DBetrag = Speed^2 - x^2
(in PB mit der funktion pow())

Z = Cos(alpha) * _2DBetrag
Y = Sin(alpha) * _2DBetrag

Ich hoffe das war verständlich genug...

X, Y, Z sind hier übrigens geschwindigkeiten...


Nach oben
 Profil  
 
 Betreff des Beitrags: HAHAHAH Es Leuft
BeitragVerfasst: 25.07.2008 15:56 
Offline
Benutzeravatar

Registriert: 01.01.2008 02:02
Wohnort: Fulda
Danke es leuft !!!! :D
Ja Danke es funktionirt mit den formeln DANKE DANKE DANKE !!!!

_________________
Wenn sie weich werden bringt Pandora sie um und scheisst sie aus bevor sie irgend etwas merken.


Nach oben
 Profil  
 
 Betreff des Beitrags:
BeitragVerfasst: 25.07.2008 16:59 
Offline

Registriert: 10.11.2004 03:22
gratuliere! dann viel spatz damit...

_________________
... machts gut und danke für den fisch ...


Nach oben
 Profil  
 
 Betreff des Beitrags:
BeitragVerfasst: 25.07.2008 17:28 
Offline

Registriert: 14.04.2007 16:48
Wohnort: Wien Umgebung
Achtung!

Ich hab einen kleinen fehler in meiner Formel!

statt
_2DBetrag = Speed^2 - x^2
muss
_2DBetrag = Sqr(Speed^2 - x^2)
sein!

Code:
Alpha.d = #PI
Beta.d = #PI
Speed.d = 10

For alphaD = 0 To 360
   Alpha = alphaD * 180/#PI
   For betaD = 0 To 360
      Beta = betaD * 180/#PI
      
      X = Cos(beta) * Speed
      
      _2DBetrag.d = Sqr(Speed*Speed - X*X)
      
      Z = Cos(alpha) * _2DBetrag
      Y = Sin(alpha) * _2DBetrag
      
      If Sqr(X*X + Y*Y + Z*Z) <> Speed
         Debug "Abweichung: " StrD(Sqr(X*X + Y*Y + Z*Z) - Speed)
      EndIf
   Next
Next


Hier sieht man das der betrag fast genau ist...


Nach oben
 Profil  
 
 Betreff des Beitrags: Re: First Person Shoter Frage
BeitragVerfasst: 22.05.2012 22:17 
Offline
Benutzeravatar

Registriert: 14.09.2004 21:51
Hallo Leute !!!

ich möchte das gleiche wie Kob machen, nur nicht als FirstPerson-Shooter. Hab versucht die Berechnung auf das "normale" Ogre-Koordinatensystem umzustellen
(xz -> Ebene, y -> Höhe). Irgendwie stimmt der Drehwinkel nicht. Die Kugel fliegt nicht in die richtige Richtung nachdem man sich gedreht hat. Wäre nett, wenn ihr mal schauen würdet, was ich da falsch mache....

Mit WASD könnt ihr steuern und mit LeftControl feuert ihr eine Kugel ab...

Hier ist der Code von der Shoot Prozedur, und hier alle Dateien zum ausführen https://www.dropbox.com/s/jgslwzduj7lzaup/Jim%27s%20Adventure.zip

Code:

; Alpha = CamRotX
; Beta = CamRotY
; Speed = Beweg
;
; Es sieht so aus als würde bei dir die X-Achse nach oben zeigen und die Y-Achse links oder rechts...
; also...
;
; X = Cos(beta) * Speed
;
; _2DBetrag = Speed^2 - x^2
; (in PB mit der funktion Pow())
;
; Z = Cos(alpha) * _2DBetrag
; Y = Sin(alpha) * _2DBetrag

id = CreateSphere(#PB_Any,1)
id2=CreateEntity(#PB_Any,MeshID(id),#PB_Material_None, NodeX(3), NodeY(3), NodeZ(3))
;EntityPhysicBody(id2, #PB_Entity_SphereBody,0,0,0)

Debug dir.f
Alpha.f = dir.f ;NodeYaw(1)
Beta.f  = 45    ;NodePitch(1)
Speed.f = 0.2

yy.f = Cos(Beta) * Speed.f : _2DBetrag = Pow(Speed.f,2) - Pow(yy.f,2)
xx.f = Sin(Alpha) * _2DBetrag
zz.f = Cos(Alpha) * _2DBetrag

;ApplyEntityImpulse(id2, x,y,z)
;MoveEntity(id2,xx,yy,zz)


Müssen Alpha und Beta eigentlich in Grad oder Radian angegeben werden bzw. wie rechnet man NodeYaw und NodePitch richtig um ?
Hab so ziemlich alle Achsen umgestellt, aber irgendwie haut das nicht hin.... Vielen Dank für eure Hilfe
Dir.f ist die Rotation der Spielers in Grad (von 0 - 360 - 0)

Gruss
D.

_________________
If you don't like cookies there is also cake !


Nach oben
 Profil  
 
 Betreff des Beitrags: Re: First Person Shoter Frage
BeitragVerfasst: 23.05.2012 19:08 
Offline
Benutzeravatar

Registriert: 14.09.2004 21:51
Hab`s selber gelöst....

Code:
id = CreateSphere(#PB_Any,1)
id2=CreateEntity(#PB_Any,MeshID(id),#PB_Material_None, NodeX(1), NodeY(1)+5, NodeZ(1))
EntityPhysicBody(id2, #PB_Entity_SphereBody,0.1,0,0)
Speed.f = 5

xx.f = Sin(NodeYaw(1)*(2*#PI/360))* speed
zz.f = Cos(NodeYaw(1)*(2*#PI/360))* speed

_________________
If you don't like cookies there is also cake !


Nach oben
 Profil  
 
 Betreff des Beitrags: Re: First Person Shoter Frage
BeitragVerfasst: 30.05.2012 21:01 
Offline
Benutzeravatar

Registriert: 18.04.2006 17:01
Wohnort: Bavaria
btw. inzwischen haben Kob und ich einen kleinen shooter gebastelt:

http://code.google.com/p/purebasic-3d-shooter/

das ist aber schon bisschen her..

_________________
Cartesy GmbH


Nach oben
 Profil  
 
 Betreff des Beitrags: Re: First Person Shoter Frage
BeitragVerfasst: 31.05.2012 08:50 
Offline
Benutzeravatar

Registriert: 08.09.2004 08:21
Wohnort: Porada Ninfu
Max_der_Held hat geschrieben:
btw. inzwischen haben Kob und ich einen kleinen shooter gebastelt

Screenshots wären nett (auf code.google.com).

Grüße ... Kiffi

_________________
"Always code as if the guy who ends up maintaining your code will be a violent psychopath who knows where you live." - Martin Golding

PB2Web: Mach mit! :allright:
PureBasic FAQ
PureBasic Projekthosting


Nach oben
 Profil  
 
Beiträge der letzten Zeit anzeigen:  Sortiere nach  
Ein neues Thema erstellen Auf das Thema antworten  [ 33 Beiträge ]  Gehe zu Seite Vorherige  1, 2, 3, 4  Nächste

Alle Zeiten sind UTC + 1 Stunde [ Sommerzeit ]


Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder und 1 Gast


Sie dürfen keine neuen Themen in diesem Forum erstellen.
Sie dürfen keine Antworten zu Themen in diesem Forum erstellen.
Sie dürfen Ihre Beiträge in diesem Forum nicht ändern.
Sie dürfen Ihre Beiträge in diesem Forum nicht löschen.

Suche nach:
Gehe zu:  

 


Powered by phpBB © 2008 phpBB Group | Deutsche Übersetzung durch phpBB.de
subSilver+ theme by Canver Software, sponsor Sanal Modifiye