spieler wendet sich dem fadenkreuz zu
Übersicht BlitzBasic Beginners-Corner
jhabekostBetreff: spieler wendet sich dem fadenkreuz zu |
Di, Sep 21, 2004 21:23 Antworten mit Zitat |
|
---|---|---|
wie krig ichs so hin das sich der spieler (so wie bei cs2d ) dem fadenkreuz zuwendet??? | ||
David |
Di, Sep 21, 2004 21:26 Antworten mit Zitat |
|
---|---|---|
Hi!
Du könntest z.B. den Winkel zwischen einer beliebigen Achse und dem Vektor an dem sich dein Fadenkreuz befindet ausrechnen und die Spielfigur um das Ergebniss rotieren! grüße |
||
http://bl4ckd0g.funpic.de |
Hubsi |
Di, Sep 21, 2004 21:27 Antworten mit Zitat |
|
---|---|---|
Code: [AUSKLAPPEN] winkel=(ATan2(my-y,mx-x)+270) Mod 360
|
||
Den ganzen Doag im Bett umanandflagga und iaz daherkema und meine Hendl`n fressn... |
jhabekost |
Di, Sep 21, 2004 21:28 Antworten mit Zitat |
|
---|---|---|
ich glaub mathe 6. klasse reicht net aus um den text zu verstehen
aber thx edit: sorry hab das 2te noch net gesehen... versteh es aba immer noch net so richtig |
||
David |
Mi, Sep 22, 2004 12:51 Antworten mit Zitat |
|
---|---|---|
Hi!
Dann hast du jetzt wirklich ein Problem. Wenn dir die mathematischen Grundlagen fehlen, musst du sie dir entweder vorzeitig aneignen oder du vergisst das was du machen wolltest und machst was anderes, leichteres... grüße |
||
http://bl4ckd0g.funpic.de |
jhabekost |
Mi, Sep 22, 2004 13:32 Antworten mit Zitat |
|
---|---|---|
gut gut,... ich versuch es mir anzueignen | ||
Hummelpups |
Mi, Sep 22, 2004 16:22 Antworten mit Zitat |
|
---|---|---|
Ich finde das das echt wenig mit Grundlagen zu tun hat
siehe 6. KLasse. Da hattest DU mit SICHERHEIT keine Trigonometrie oder so. Von daher soll er die Formel einbauen, wird aber aus ihr nicht schlau. Tja. Schicksal. Später wirst du wissen was gemeint ist. So früh iost das glaube ich ein wenig kompliziert. BiZaR |
||
BladeRunnerModerator |
Mi, Sep 22, 2004 16:42 Antworten mit Zitat |
|
---|---|---|
Ich denke es reicht für den Anfang, in der Onlinehilfe nachzuschauen:
Zitat: Winkel#=ATAN2# (Y#, X#)
Beschreibung Diese Funktion berechnet den Winkel aus X- und Y-Längen. Es ist somit die erweiterte Tangensfunktion. Beachte, dass diese Funktion etwas anders als ATAN funktioniert, und keine Arcustangens-Funktion ist. Der Winkels wird nicht aus einem Tangenswert ermittelt, sondern aus den zwei Katheten eines rechtwinkligen Dreiecks. Diese Funktion kann einen Winkel im Umkreis von -180° bis 180° berechnen. Dadurch ist es wesentlich einfacher, als die ATAN-Funktion, wo man erst durch logische Überlegungen den Winkel ausrechnen kann. Um einen vollen Winkel im Bereich von 0° bis 360° auszurechnen, muss man nur diese Formel anwenden: Winkel#=(ATAN2(y#,x#)+360) MOD 360 Parameter Y = vertikaler Abstand (Gegenkathete) X = horizontaler Abstand (Ankathete) Rückgabewert Es wird ein Winkel in Grad zurückgeliefert. Wenn du nun deine Animationsframes in Grad gespeichert hast, kannst du anhand des x- und y-Abstandes ermitteln wohin deine Figur schauen muss. Hubsi hat schon alles wichtige geschrieben, Dass ergebnis einfach als Framenummer nehmen . 8wenn du weniger richtungen bei deiner Figur hast, musst du eben das Ergebnis passend "runden". |
||
Zu Diensten, Bürger.
Intel T2300, 2.5GB DDR 533, Mobility Radeon X1600 Win XP Home SP3 Intel T8400, 4GB DDR3, Nvidia GF9700M GTS Win 7/64 B3D BMax MaxGUI Stolzer Gewinner des BAC#48, #52 & #92 |
KabelbinderSieger des WM-Contest 2006 |
Mi, Sep 22, 2004 17:52 Antworten mit Zitat |
|
---|---|---|
Ich hatte Sin, Cos und Tan auch noch nicht in der Schule. Trotzdem weiß ich das in BB zu benutzen. Hab mir einfach ein paar Tutorials angesehen und voila. | ||
<Wing Avenger Download> ◊◊◊ <Macrophage Download> |
aasgeier |
So, Okt 03, 2004 15:01 Antworten mit Zitat |
|
---|---|---|
Das mit den Tuts hab ich auch mal gemacht. Aber wenn man Trigo noch nicht in der Schule hatte, kann man die auch nur auswendig lernen. Vollständig wird man jedenfalls nicht draus schlau. Aber ich weiß jetzt, welche Func ich wann brauch... | ||
Ich geh jetzt nach Jamaika, daa, wo der Hanf blüht... |
Kado |
Sa, Okt 09, 2004 20:55 Antworten mit Zitat |
|
---|---|---|
Hubsi hat Folgendes geschrieben: Code: [AUSKLAPPEN]
winkel=(ATan2(my-y,mx-x)+270) Mod 360 muss ich den code einfach einfügen?? oder muss ich da noch was verändern? Und wie kierg ich das ich eine maus im spiel hab?? |
||
Hubsi |
Sa, Okt 09, 2004 21:03 Antworten mit Zitat |
|
---|---|---|
Den Code in die Hauptschleife und den Wert der in winkel gespeichert wird dazu verwenden den entsprechenden Winkel des Spielers zu zeichnen.
Eine Maus bekommst Du so auf den Schirm:Code: [AUSKLAPPEN] DrawImage mausbild,mousex(),mousey()
Edit: In mx und my musst Du die Rückgabewerte von mousex() und mousey() zwischenspeichern. Kannst Du dann auch gleich bei der Mausanzege verwenden |
||
Den ganzen Doag im Bett umanandflagga und iaz daherkema und meine Hendl`n fressn... |
Kado |
Sa, Okt 09, 2004 21:08 Antworten mit Zitat |
|
---|---|---|
Hubsi hat Folgendes geschrieben: Den Code in die Hauptschleife und den Wert der in winkel gespeichert wird dazu verwenden den entsprechenden Winkel des Spielers zu zeichnen.
Eine Maus bekommst Du so auf den Schirm:Code: [AUSKLAPPEN] DrawImage mausbild,mousex(),mousey()
Edit: In mx und my musst Du die Rückgabewerte von mousex() und mousey() zwischenspeichern. Kannst Du dann auch gleich bei der Mausanzege verwenden wow , also kannste nochmal in noob sprache erklären? bidde also was mx und my weiß ich ja das muss in die () rein, aber den rest :O |
||
Hubsi |
Sa, Okt 09, 2004 21:15 Antworten mit Zitat |
|
---|---|---|
Nur damit das richtig verstanden wird: mx und my sind die Variablen in denen die Position der Maus gespeichert ist:Code: [AUSKLAPPEN] mx=MouseX()
Ich denke mal das die Bilder der Spielfigur in einem Array gespeichert sind. Und da setzt Du eben den winkel ein:Code: [AUSKLAPPEN] my=MouseY() DrawImage spieler(winkel),x,y,frame Jo, der Rest ist klar, denke ich?
|
||
Den ganzen Doag im Bett umanandflagga und iaz daherkema und meine Hendl`n fressn... |
KabelbinderSieger des WM-Contest 2006 |
So, Okt 10, 2004 12:54 Antworten mit Zitat |
|
---|---|---|
Hab mal ein kleines Beispiel geschrieben:
Code: [AUSKLAPPEN] Graphics 640,480,16,1
TFormFilter 1 sp = CreateImage(20,10) SetBuffer ImageBuffer(sp) Cls Line 0,0,19,4 Line 19,5,0,9 Line 0,9,0,0 MaskImage sp,0,0,0 Dim char(360) For i = 0 To 360 char(i)=CopyImage(sp) MidHandle char(i) RotateImage char(i),i MaskImage char(i),0,0,0 Next SetBuffer BackBuffer() Repeat DrawImage sp,0,0 DrawImage char((ATan2(MouseY()-240,MouseX()-320)+360)Mod 360),320,240 Rect MouseX()-5,MouseY(),10,1 Rect MouseX(),MouseY()-5,1,10 Flip Cls Until KeyHit(1) End |
||
<Wing Avenger Download> ◊◊◊ <Macrophage Download> |
Chester |
So, Okt 10, 2004 16:09 Antworten mit Zitat |
|
---|---|---|
Mach hier was draus.....
Code: [AUSKLAPPEN] Graphics 640, 480, 16, 1 Loading = LoadImage("GFX/Loading.bmp") MaskImage Loading, 255, 0, 255 DrawImage Loading, 280, 210 Dim player(119,3) Dim player1(119,3) Dim map1(100, 100) Global bGround = LoadImage("GFX/Menu/BackGround.bmp") Global mouse = LoadImage("GFX/MENU/mouse.bmp") Global NewGame0 = LoadImage("GFX/MENU/NewGame0.bmp") Global Newgame1 = LoadImage("GFX/MENU/Newgame1.bmp") Global Exit0 = LoadImage("GFX/MENU/Exit0.bmp") Global Exit1 = LoadImage("GFX/MENU/Exit1.bmp") Global map = LoadImage("GFX/MAPS/MAP1/map.bmp") Global gegner = LoadImage("GFX\test_gegner.bmp") player(0,0)=LoadAnimImage("GFX/player.bmp", 44, 32, 0, 3) player1(0,0)=LoadAnimImage("GFX/player1.bmp", 50, 68, 0, 3) MaskImage exit0, 255, 0, 255 MaskImage Exit1, 255, 0, 255 MaskImage NewGame0, 255, 0, 255 MaskImage NewGame1, 255, 0, 255 MaskImage map, 255, 0, 255 MaskImage mouse, 255, 0, 255 MaskImage player(0,0), 255, 0, 255 MaskImage player1(0,0),255, 0, 255 Type spieler Field Player_mode Field Player_state Field Drehung Field speed Field Min_Speed Field Max_Speed Field Health Field Max_Damage Field Min_Damage Field player_weapon End Type Type gegner Field x_pos Field y_pos Field picture Field drehung Field speed Field health Field Min_Damage Field Max_damage End Type Global spieler.spieler= New spieler ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; SetBuffer BackBuffer() ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;Menue ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; MoveMouse 310, 210 exit_test0 = 0 new_test0 = 0 While Not KeyHit(1) x_kor = MouseX() y_kor = MouseY() t1$ = "X:" t2$ = " Y:" t3$ = t1$ + x_kor t4$ = t2$ + y_kor t5$ = t3$ + t4$ exit_test = ImagesOverlap(mouse, x_kor, y_kor,Exit0, 240, 250) exit_test2 = GetMouse() new_test = ImagesOverlap(mouse, x_kor, y_kor, NewGame0, 240, 160) new_test2 = GetMouse() Cls TileBlock bground, 640, 480 Text 20, 20, t5$ If exit_test = 0 Then Exit_test0 = 0 If exit_test = 1 Then Exit_test0 = 1 If Exit_test0 = 0 Then DrawImage Exit0, 240, 250 If exit_test0 = 1 Then DrawImage exit1, 240, 250 If Exit_test = 1 Then If exit_test2 = 1 Then shutdown() EndIf If new_test = 0 Then new_test0 = 0 If new_test = 1 Then new_test0 = 1 If new_test0 = 0 Then DrawImage NewGame0, 240, 160 If new_test0 = 1 Then DrawImage NewGame1, 240, 160 If new_test = 1 Then If exit_test2 = 1 Then game() EndIf DrawImage mouse, x_kor, y_kor Flip Wend ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; Function game() ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; spieler\speed = medium_speed spieler\Max_speed = 100 spieler\Health = 100 ;;; MoveMouse 310, 210 ;;; fps=CreateTimer(60) ; Frames pro Sekunde ;;;;;;;;;;;;;;;;;;;;;;;;;;;;Map definieren For x1 = 0 To 50 For y1 = 0 To 50 map1(x1, y1) = 1 Next Next ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;Player in Richtung Maus drehen HandleImage player(0,0), 20, 9 HandleImage player1(0,0), 26, 14 ;;; TFormFilter 0 ;;; For w = 1 To 119 player(w,0)=CopyImage(player(0,0)) RotateImage(player(w,0),w*3) Next For w1= 1 To 119 player1(w1,0)=CopyImage(player1(0, 0)) RotateImage(player1(w1,0),w1*3) Next ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; While Not KeyHit(1) ; Hauptschleife ;; x_kor = MouseX(); Maus X Koordinate definieren y_kor = MouseY(); Maus Y Koordinate definieren ;;;;X=X_Korrdinate, Y=Y_Koordinate in einer Variable speichern, zum ausgeben t1$ = "X:" t2$ = " Y:" t3$ = t1$ + x_kor t4$ = t2$ + y_kor t5$ = t3$ + t4$ ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; spieler\drehung=(ATan2(y_kor-scrolly,x_kor-scrollx)+270) Mod 360 ; Winkel für Player Drehung berechnen If spieler\drehung>357 Then spieler\drehung=357 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; Cls ; Bildschirm Drehen ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;Map laden und ausgeben For x = 0 To 50 For y = 0 To 50 If map1(x,y) = 1 Then DrawImage map, x*100+viewx, y*100+viewy Next Next ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; a, w, s, d, Steuerung If KeyDown(17) Then ;w viewy = viewy + spieler\speed If MilliSecs() > t_player + 100 Then t_player=MilliSecs() f_player=(f_player + 1) Mod 3 EndIf EndIf If KeyDown(31)Then ;s viewy = viewy - spieler\speed If MilliSecs() > t_player + 100 Then t_player=MilliSecs() f_player=(f_player + 1) Mod 3 EndIf EndIf If KeyDown(30)Then;a viewx = viewx + spieler\speed If MilliSecs() > t_player + 100 Then t_player=MilliSecs() f_player=(f_player + 1) Mod 3 EndIf EndIf If KeyDown(32)Then;d viewx = viewx - spieler\speed If MilliSecs() > t_player + 100 Then t_player=MilliSecs() f_player=(f_player + 1) Mod 3 EndIf EndIf ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;Sprinten, gehen If KeyHit(2) Then spieler\speed = norm_speed If KeyHit(3) Then spieler\speed = medium_speed If KeyHit(4) Then spieler\speed = high_speed If Spieler\speed = high_speed Then spieler\max_speed = spieler\max_speed - 1 If spieler\max_speed = 0 Then spieler\speed = medium_speed If spieler\speed = norm_speed Or spieler\speed = medium_speed And spieler\max_speed <> 100 Then spieler\max_speed = spieler\max_speed +1 ausdauer$= "Ausdauer: " + spieler\max_speed ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;Health health$ = "Health: " + spieler\health Text 20, 460, health$ Text 500,460, ausdauer$ ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; If KeyHit(18) Then spieler\player_mode = Spieler\player_mode +1 If Spieler\player_mode = 2 Then Spieler\player_mode = 0 If spieler\player_mode = 0 Then DrawImage player(spieler\drehung/3,0), scrollx, scrolly, f_player ; Spieler malen EndIf If spieler\player_mode = 1 Then DrawImage player1(spieler\drehung/3,0), scrollx, scrolly, f_player ; Spieler malen EndIf Text 20, 20, t5$ ; X und Y der Maus ausgeben DrawImage mouse, x_kor, y_kor; Maus ausgeben Flip Wend End Function Function shutdown() FreeImage bGround FreeImage mouse FreeImage NewGame0 FreeImage Newgame1 FreeImage map FreeImage Exit0 FreeImage Exit1 FreeImage player(0,0) FreeImage player1(0,0) FreeImage Loading End End Function Ein projekt das ich wegen KI aufgab |
||
Übersicht BlitzBasic Beginners-Corner
Powered by phpBB © 2001 - 2006, phpBB Group