Winkel stimmt nicht
Übersicht

![]() |
jj2Betreff: Winkel stimmt nicht |
![]() Antworten mit Zitat ![]() |
---|---|---|
Hi,
Ich will gerade ein Bild an ein anderes ausrichten. Aber i-was stimmt nicht. Das bild dreht sich immer nur bis zu einem bestimmten winkel und danach spinnt es. Code: [AUSKLAPPEN] For g.gegner=Each gegner ColorG3D(255,255,255,1,g\hoehe) If typ=0 Then DrawImage3D (gegner1,g\x+p_x,g\y+p_y,0,0,437,259,0,g\winkel) g\abstand=Abs(p_x+g\x)+Abs(p_y+g\y) ;Höhe angleichen If g\abstand < 2000 Then If g\hoehe< p_hoehe Then g\hoehe=g\hoehe+0.002 If g\hoehe> p_hoehe Then g\hoehe=g\hoehe-0.002 EndIf ;Folgen If g\abstand < 2000 Then g\winkel = ATan2(g\y-p_y,g\x-p_x) EndIf Next p_x+y sind die player koordinaten und g\x+y die gegner koordinaten. Aber i-wie dreht sich der gegner nur am anfang richtig. Wäre nett wenn ihr mir helfen könntet. mfg jj2 |
||
...:::ICH WOHNE IN DER GESÜNDESTEN STADT DEUTSCHLANDS:::...
Meine Pages : www.lpbase.de mein projekt :Authority von Impulse Soft User posted image |
Beatenvoy |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Winkel = ATan2(y1-y2,x1-x2) Mod 360 ????? | ||
![]() |
jj2 |
![]() Antworten mit Zitat ![]() |
---|---|---|
Nein, geht trotzdem nicht.
Ich glaube, dass es i-wie daran liegt dass der 0 punkt in bb3d in der mitte des bildschirms ist. So, also habe ich zum spass mal das Bild in der Mitte des Bildschirms gezeichnet und siehe da, es hat funktioniert. Könnt ihr mir sagen warum und wie ich das ändern kann? mfg jj2 |
||
...:::ICH WOHNE IN DER GESÜNDESTEN STADT DEUTSCHLANDS:::...
Meine Pages : www.lpbase.de mein projekt :Authority von Impulse Soft User posted image |
![]() |
Willi die Rübe |
![]() Antworten mit Zitat ![]() |
---|---|---|
Den Bildschirm Nullpunkt kannst du mit Origin X, Y verschieben, aber normal befindet er sich oben links. Ist das Image auch mittig ausgerichtet? (HandleImage img, x, y ) | ||
Ich habe keine Lösung, aber ich bewundere das Problem.
Tehadon Q6600, MSI Neo2-FR, 4GB Ram, nVidia 7800 GTX At the Farewell Party visit: MySpace | Homepage |
![]() |
jj2 |
![]() Antworten mit Zitat ![]() |
---|---|---|
sry aber wir sind in 3D | ||
...:::ICH WOHNE IN DER GESÜNDESTEN STADT DEUTSCHLANDS:::...
Meine Pages : www.lpbase.de mein projekt :Authority von Impulse Soft User posted image |
![]() |
Willi die Rübe |
![]() Antworten mit Zitat ![]() |
---|---|---|
Dann wäre das die entsprechende Funktion in 3D (nur mal so am Rande)
Code: [AUSKLAPPEN] Function CenterMesh (entity)
FitMesh entity, -(MeshWidth (entity) / 2), -(MeshHeight (entity) / 2), -(MeshDepth (entity) / 2), MeshWidth (entity), MeshHeight (entity), MeshDepth (entity) End Function Auch wenn es unwahrscheinlich ist, dass es damit zusammenhängt. Hast du evt. die Achsen verwechselt? Da man bei normaler Kameraausrichtung oft Y mit Z verwechselt. Aber irgendwie kommt mir das komisch vor: Code: [AUSKLAPPEN] DrawImage3D (gegner1,g\x+p_x,g\y+p_y,0,0,437,259,0,g\winkel)
;[...] g\winkel = ATan2(g\y-p_y,g\x-p_x) wenn sich der Gegner an g\x+p_x bzw. g\y+p_y befindet,(wieso eigentlich?) dann musst du das auch angeben, also theoretisch: g\winkel = ATan2(g\y+p_y-p_y,g\x+p_x-p_x) Was das zur Folge hätte : g\winkel = ATan2(g\y,g\x) Was allerdings auch nicht so richtig aussieht ... ![]() Probiers mal noch so: g\winkel = ATan2((...)+360) mod 360 |
||
Ich habe keine Lösung, aber ich bewundere das Problem.
Tehadon Q6600, MSI Neo2-FR, 4GB Ram, nVidia 7800 GTX At the Farewell Party visit: MySpace | Homepage |
![]() |
hecticSieger des IS Talentwettbewerb 2006 |
![]() Antworten mit Zitat ![]() |
---|---|---|
So, ich hab's mal ausprobiert und bin auf folgendes gekommen. Da die Y-Koordinate unter Draw3D ja gespiegelt ist, also mehr bedeutet nach oben, muß bei Atan2 zuerst X und dann Y angegeben werden.
Folgendes Beispiel funktioniert wunderbar: Code: [AUSKLAPPEN] Graphics3D 600,600,0,2
SetBuffer BackBuffer() camera=CreateCamera() Include "Draw3D.bb" Origin3D(600,600) image=LoadImage3D("shoot.png",2) NativeInit3D() xp=100 yp=100 ColorN3D(255,255,255,.25,12) ;MAINLOOP While Not KeyHit(1) If MouseHit(1) xp=MouseX3D yp=MouseY3D End If winkel#=ATan2(xp-MouseX3D,yp-MouseY3D) DrawImage3D(image,xp,yp,0,0,24,24,0,winkel) DrawImage3D(image,MouseX3D,MouseY3D,0,0,24,24,0,winkel) Line3D(xp,yp,MouseX3D,MouseY3D) RenderWorld Clear3D() Flip Wend End Per Mausklick kannst du noch die Zielposition angeben. |
||
Download der Draw3D2 V.1.1 für schnelle Echtzeiteffekte über Blitz3D |
Übersicht


Powered by phpBB © 2001 - 2006, phpBB Group