spieler wendet sich dem fadenkreuz zu

Übersicht BlitzBasic Beginners-Corner

Neue Antwort erstellen

jhabekost

Betreff: spieler wendet sich dem fadenkreuz zu

BeitragDi, Sep 21, 2004 21:23
Antworten mit Zitat
Benutzer-Profile anzeigen
wie krig ichs so hin das sich der spieler (so wie bei cs2d Very Happy ) dem fadenkreuz zuwendet???
 

David

BeitragDi, Sep 21, 2004 21:26
Antworten mit Zitat
Benutzer-Profile anzeigen
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

BeitragDi, Sep 21, 2004 21:27
Antworten mit Zitat
Benutzer-Profile anzeigen
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

BeitragDi, Sep 21, 2004 21:28
Antworten mit Zitat
Benutzer-Profile anzeigen
ich glaub mathe 6. klasse reicht net aus um den text zu verstehen Wink
aber thx
edit: sorry hab das 2te noch net gesehen... versteh es aba immer noch net so richtig Wink
 

David

BeitragMi, Sep 22, 2004 12:51
Antworten mit Zitat
Benutzer-Profile anzeigen
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

BeitragMi, Sep 22, 2004 13:32
Antworten mit Zitat
Benutzer-Profile anzeigen
gut gut,... ich versuch es mir anzueignen Embarassed

Hummelpups

BeitragMi, Sep 22, 2004 16:22
Antworten mit Zitat
Benutzer-Profile anzeigen
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

BladeRunner

Moderator

BeitragMi, Sep 22, 2004 16:42
Antworten mit Zitat
Benutzer-Profile anzeigen
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

Kabelbinder

Sieger des WM-Contest 2006

BeitragMi, Sep 22, 2004 17:52
Antworten mit Zitat
Benutzer-Profile anzeigen
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

BeitragSo, Okt 03, 2004 15:01
Antworten mit Zitat
Benutzer-Profile anzeigen
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

BeitragSa, Okt 09, 2004 20:55
Antworten mit Zitat
Benutzer-Profile anzeigen
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

BeitragSa, Okt 09, 2004 21:03
Antworten mit Zitat
Benutzer-Profile anzeigen
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 Wink
Den ganzen Doag im Bett umanandflagga und iaz daherkema und meine Hendl`n fressn...
 

Kado

BeitragSa, Okt 09, 2004 21:08
Antworten mit Zitat
Benutzer-Profile anzeigen
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 Wink


wow , also kannste nochmal in noob sprache erklären? Razz bidde

also was mx und my weiß ich ja das muss in die () rein, aber den rest :O

Hubsi

BeitragSa, Okt 09, 2004 21:15
Antworten mit Zitat
Benutzer-Profile anzeigen
Nur damit das richtig verstanden wird: mx und my sind die Variablen in denen die Position der Maus gespeichert ist:Code: [AUSKLAPPEN]
mx=MouseX()
my=MouseY()
Ich denke mal das die Bilder der Spielfigur in einem Array gespeichert sind. Und da setzt Du eben den winkel ein:Code: [AUSKLAPPEN]
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...

Kabelbinder

Sieger des WM-Contest 2006

BeitragSo, Okt 10, 2004 12:54
Antworten mit Zitat
Benutzer-Profile anzeigen
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

BeitragSo, Okt 10, 2004 16:09
Antworten mit Zitat
Benutzer-Profile anzeigen
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

Neue Antwort erstellen


Übersicht BlitzBasic Beginners-Corner

Gehe zu:

Powered by phpBB © 2001 - 2006, phpBB Group