Spieler in bestimmte Richtung Drehen
Übersicht

![]() |
SephkaBetreff: Spieler in bestimmte Richtung Drehen |
![]() Antworten mit Zitat ![]() |
---|---|---|
Hi,ich sitzt grad an einem 2D shooter.
Da ich mich nicht so auskenne mit Winkeln und sinus,cosinus.................. Sitze ich vor folgendem Problem: Ich möchte das der Feind in Richtung des Spielers Dreht und auf ihn zu geht. Wie brechne ich wohin er sich drehn muss? |
||
Mein Freund und Helfer:
Win7 Home Premium SP1 AMD Athlon II X4 645 3.1GHZ 8GB Ram 64bit |
- Zuletzt bearbeitet von Sephka am Fr, Nov 05, 2010 18:03, insgesamt einmal bearbeitet
![]() |
Tennisball |
![]() Antworten mit Zitat ![]() |
---|---|---|
Hallo Sephka,
Zur Winkelberechnung gibt es den Befehl Atan2 ![]() Kleines Beispiel: BlitzBasic: [AUSKLAPPEN] GegnerWinkel = ATan2(SpielerY-GegnerY,SpielerX-GegnerX) mfg, Tennisball |
||
![]() |
Sephka |
![]() Antworten mit Zitat ![]() |
---|---|---|
Ok jetzt kommt aber
'Variable must ba a type' Ich hab die Datei Included. Code: [AUSKLAPPEN] Function B_ILL()
If Sqr((SP_X- Feind\F_X)^2 + (Sp_Y-Feind\F_Y)^2)<50 Then Feind\A = ATan2(SP_Y-Feind\F_Y,Sp_X-Feind\F_X) Feind\F_X = Feind\F_A - Cos(Feind\A) * Feind\Speed Feind\F_Y= Feind\F_Y + Sin(Feind\A) * Feind\Speed End If End Function |
||
Mein Freund und Helfer:
Win7 Home Premium SP1 AMD Athlon II X4 645 3.1GHZ 8GB Ram 64bit |
![]() |
Tennisball |
![]() Antworten mit Zitat ![]() |
---|---|---|
Hi,
ich weiß zwar nicht wie dein Type aussieht, aber das hier kommt mir komisch vor: Sephka hat Folgendes geschrieben: Feind\F_X = Feind\F_A - Cos(Feind\A) * Feind\Speed
Feind\F_Y= Feind\F_Y + Sin(Feind\A) * Feind\Speed müsste das da nicht heißen Feind\F_X ? ![]() |
||
![]() |
Sephka |
![]() Antworten mit Zitat ![]() |
---|---|---|
Ne war zwar ein BUg aber hat nichs gemacht.
Code: [AUSKLAPPEN] Type TFeind
Field F_X,F_Y,F_A Field LIFE Field SPEED Field SKIN Field Typ$ Field F_W_ID Field W_RANGE Field W_RATE Field W_MAGAZIN Field W_LEFT End Type |
||
Mein Freund und Helfer:
Win7 Home Premium SP1 AMD Athlon II X4 645 3.1GHZ 8GB Ram 64bit |
![]() |
Tennisball |
![]() Antworten mit Zitat ![]() |
---|---|---|
Dann ist's eben dieses Feind\A, das dein Type nicht besitzt | ||
![]() |
Sephka |
![]() Antworten mit Zitat ![]() |
---|---|---|
Man bin ich blind,Danke!!!!!!!
EDIT:Klappt immer noch nicht.... Function B_ILL() If Sqr((SP_X- Feind\F_X)^2 + (Sp_Y-Feind\F_Y)^2)<50 Then Feind\F_A = ATan2(SP_Y-Feind\F_Y,Sp_X-Feind\F_X) Feind\F_X = Feind\F_X - Cos(Feind\F_A) * Feind\Speed Feind\F_Y= Feind\F_Y + Sin(Feind\F_A) * Feind\Speed End If End Function |
||
Mein Freund und Helfer:
Win7 Home Premium SP1 AMD Athlon II X4 645 3.1GHZ 8GB Ram 64bit |
![]() |
XeresModerator |
![]() Antworten mit Zitat ![]() |
---|---|---|
Die Alternative IDE IDEal im Strict-Modus hilft solche Fehler zu vermeiden; alle nicht deklarierten Variablen werden rot hervorgehoben.
Variablen Lokal oder Global deklariert? |
||
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) |
![]() |
Tennisball |
![]() Antworten mit Zitat ![]() |
---|---|---|
Was genau klappt denn bitteschön nicht?
Edit: Ich glaube bei deiner Pythagorasanwendung wolltest du wahrscheinlich >50 und nicht <50 schreiben. |
||
- Zuletzt bearbeitet von Tennisball am Fr, Nov 05, 2010 18:38, insgesamt einmal bearbeitet
![]() |
Sephka |
![]() Antworten mit Zitat ![]() |
---|---|---|
Alle sind Rot... | ||
Mein Freund und Helfer:
Win7 Home Premium SP1 AMD Athlon II X4 645 3.1GHZ 8GB Ram 64bit |
![]() |
XeresModerator |
![]() Antworten mit Zitat ![]() |
---|---|---|
Du musst die Variablen entweder an die Funktion übergeben oder Global machen. Ersteres ist empfohlen.
![]() ![]() |
||
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) |
![]() |
Sephka |
![]() Antworten mit Zitat ![]() |
---|---|---|
1.Es geht nichtmal wenndie Funktion Nicht includet ist
2.Kanne in Type global sein....? 3.Der ganze Code Code: [AUSKLAPPEN] ;GTA by Jonas Hachmeister alias Sephka...
Global gfx_w=1024;1280 Global gfx_h=768;1024 Graphics gfx_w,gfx_h,16,2 SeedRnd MilliSecs() ;GLOBALS Global GRAD#,Angle#,speed# Global S_Timer#=0,Sshoot,WID,SID,WPic Global W1Left,W2Left,S1LEFT,S2LEFT,SLEFT,WLEFT ;BILDER punch = LoadImage("GFX\Punch.png") ;SOUNDS ZDeath = LoadSound("SFX\E1Kill.wav") Reload = LoadSound("SFX\REload.wav") ;ARRAY Dim WAFFE$ (0,7) Dim Spieler(359) Dim Spieler0(359) Dim spieler1(359) Dim spieler2(359) Dim W0$(0,7) Dim W1$(0,7) Dim W2$(0,7) Dim feind0(359) ;FONT font = LoadFont("Font\Pricedown.ttf",20) font1 = LoadFont("Arial",14) ;SPIELER Global SP_X#=400,SP_Y#=300,SP_LIFE,SP_SPEED,SP_W_ID Global SP_W_RANGE,SP_W_RATE,SP_W_MAGAZIN,SP_W_LEFT Const Grafk_rotate = 5 ;GRAFIK ERSTELLEN TFormFilter 0 Spieler0(0)=LoadImage("GFX\P0.png") MidHandle Spieler0(0) For Angle#=0 To 359 Spieler0(Angle)=CopyImage(Spieler0(0)) MaskImage Spieler0(Angle),255,255,255 RotateImage Spieler0(Angle),Angle Next ;SPIELER MIT PISTOLE spieler1(0)=LoadImage("GFX\P1.png") MidHandle spieler1(0) For Angle#=0 To 359 spieler1(Angle)=CopyImage(spieler1(0)) MaskImage spieler1(Angle),255,255,255 RotateImage spieler1(Angle),Angle Next ;SPIELER MIT PISTOLE spieler2(0)=LoadImage("GFX\P2.png") MidHandle spieler2(0) For Angle#=0 To 359 spieler2(Angle)=CopyImage(spieler2(0)) MaskImage spieler2(Angle),255,255,255 RotateImage spieler2(Angle),Angle Next ;FEINDE Type TFeind Field F_X,F_Y,F_A Field LIFE Field SPEED Field SKIN Field Typ$ Field F_W_ID Field W_RANGE Field W_RATE Field W_MAGAZIN Field W_LEFT End Type feind0(0)=LoadImage("GFX\E1.png") MidHandle feind0(0) For Angle#=0 To 359 feind0(Angle)=CopyImage(feind0(0)) MaskImage feind0(Angle),255,255,255 RotateImage feind0(Angle),Angle Next ;PATRONEN BPatrone = LoadImage("GFX\Patrone.png") Type TPATRONE Field X#,Y#,A#,PX,PY Field SPEED# Field DAMAGE# Field RANGE# End Type ;Waffen file=ReadFile("DATA\W0.dat") For x=0 To 7 W0$(0,x) = ReadLine$(file) Next CloseFile file file=ReadFile("DATA\W1.dat") For x=0 To 7 W1$(0,x) = ReadLine$(file) Next CloseFile file S1LEFT = W1(0,5):W1Left = 5 file=ReadFile("DATA\W2.dat") For x=0 To 7 W2$(0,x) = ReadLine$(file) Next CloseFile file S2LEFT = W2(0,5):W2Left = 5 ChangeWeapon("W0") CreateEnemy(1,0,"ill") SetBuffer BackBuffer() ;################################### ;INCLUDE ;Include "Behaivor\Ill.bb" Repeat ;TASTEN ABFRAGEN If MouseHit(1) Then CreateEnemy(1,0,"ill") If KeyDown(57) And S_Timer=0 And WAFFE(0,7)><0 And SLEFT>0 Then ;SCHUSS[LEERTASTE] SLEFT = SLEFT - 1 Patrone.TPatrone = New TPATRONE Patrone\SPEED = WAFFE(0,6) Patrone\x# = SP_X# + Cos(Angle) * patrone\speed# Patrone\y# = SP_Y# + Sin(Angle) * patrone\speed# Patrone\A# = Angle Patrone\Damage = WAFFE(0,1) Patrone\px = SP_X:Patrone\Py = SP_Y WKadenz = WAFFE(0,3) S_Timer# = MilliSecs()+WKadenz schn = PlaySound(Sshoot) Else If KeyDown(57) And S_Timer=0 And WAFFE(0,7)=0 schn = PlaySound(Sshoot) WKadenz = WAFFE(0,3) WDamage = WAFFE(0,1) WRANGE = WAFFE(0,4) S_Timer# = MilliSecs()+WKadenz For Feind.TFeind = Each TFeind If Sqr((SP_X-Feind\F_X)^2 + (SP_Y-Feind\F_Y)^2)<=WRANGE Then Feind\LIFE = Feind\Life - WDamage:Color 255,255,255:Rect 0,0,100,100,1 Next ;DrawImage Punch,SP_x# + Cos(angle),SP_y# + Sin(angle)*speed End If If KeyDown(203) Then Angle = Angle - 3;DREHEN[<-] If KeyDown(205) Then Angle = Angle + 3;DREHEN[->] If KeyDown(200) Then;VORNE[HOCH] If speed < 0 speed = 0 speed# = speed# + 0.05 ElseIf KeyDown(208) Then;RÜCKWÄRTS[PFEIL UNTEN] If speed > 0 speed = 0 speed# = speed# - 0.025 Else speed = 0 End If ;##WAFFE WECHSELN## If KeyHit(3) Then ChangeWeapon("W1") If KeyHit(4) Then ChangeWeapon("W2") If KeyHit(2) Then ChangeWeapon("W0") ;############################ If Angle > 359 Then Angle = 0 If Angle < 0 Then Angle = 359 Wweight# = WAFFE(0,2):Wweight = Wweight/2 If speed# > 2-Wweight Then speed# = 2-Wweight If speed# < -2+Wweight Then speed# = -2+Wweight SP_X# = SP_X# + Cos(Angle) * speed# SP_Y# = SP_Y# + Sin(Angle) * speed# If SP_X < 1 Then SP_X = 1 If SP_X >gfx_w Then SP_X = gfx_w If SP_Y < 1 Then SP_Y = 1 If SP_Y > gfx_h Then SP_Y = gfx_h DrawImage Spieler(Angle),SP_X,SP_Y;##Spieler Zeichnen## ;WAFFE CHECKEN If SLEFT=0 And WLEFT >0 Then SLEFT = WAFFE(0,5):WLEFT = WLEFT-1:Rchn = PlaySound(Reload):S_Timer = MilliSecs() + 1000 ;FEINDE ZEICHNEN USW... For Feind.Tfeind = Each TFeind B_ILL() If Feind\Skin = 0 Then DrawImage feind0(Feind\F_A),Feind\F_X,Feind\F_Y If Feind\Life<=0 Then If Feind\Skin = 0 Then Dchn = PlaySound(ZDeath) Delete Feind.TFeind End If Next ;##PATRONEN DURCHGEHEN ZEICHNEN\LÖSCHEN...## For PATRONE = Each TPATRONE XD=Patrone\x-Patrone\px YD=Patrone\y-Patrone\py Abstand = Sqr(XD^2 + YD^2) WRANGE = WAFFE(0,4) If Abstand>WRANGE Then Delete Patrone.TPATRONE:Exit Patrone\x# = Patrone\x# + Cos(Patrone\a) * patrone\speed# Patrone\y# = Patrone\y# + Sin(Patrone\a) * patrone\speed# Color 100,100,100 DrawImage BPatrone,PATRONE\x,PATRONE\y For Feind = Each TFeind If ImagesOverlap(BPatrone,Patrone\x,Patrone\y,feind0(0),Feind\F_X,Feind\F_Y)=1 Then Feind\LIFE=Feind\LIFE-Patrone\Damage Delete Patrone.TPatrone:Exit End If Next Next ;##STATUS ZEICHNEN## SetFont font1 If WAFFE(0,7) >< 0 Then Text 1,1,SLEFT+"/"+WLEFT DrawImage WPic,0,gfx_h - 49 SetFont font Color 255,255,255 Text 55,gfx_h - 49,WAFFE(0,0) Flip Cls If S_Timer < MilliSecs() Then S_Timer = 0 Until KeyHit(1) Function ChangeWeapon(WID$) ;WAFFEN If WAFFE(0,7) = 1 Then S1LEFT=SLEFT:W1Left=WLEFT If WAFFE(0,7) = 2 Then S2LEFT=SLEFT:W2Left=WLEFT For x=0 To 7 If WID$="W0" Then WAFFE(0,x)=W0(0,x) If WID$="W1" Then WAFFE(0,x)=W1(0,x):SLEFT=S1LEFT:WLEFT=W1Left If WID$="W2" Then WAFFE(0,x)=W2(0,x):SLEFT=S2LEFT:WLEFT=W2Left Next If WID$="W0" Then ChangeSkin("S0") If WID$="W1" Then ChangeSkin("S1") If WID$="W2" Then ChangeSkin("S2") Sshoot = LoadSound("SFX\WAFFE_"+WAFFE(0,7)+".wav") WPic = LoadImage("GFX\W"+WAFFE(0,7)+".png") MaskImage WPic,255,0,0 End Function Function ChangeSkin(SID$) For x=0 To 359 If SID$ = "S0" Then Spieler(x) = Spieler0(x) If SID$ = "S1" Then Spieler(x) = spieler1(x) If SID$ = "S2" Then Spieler(x) = spieler2(x) Next End Function Function CreateEnemy(anzahl%,SKIN,behaivor$) For x=0 To anzahl Feind.Tfeind = New TFeind Select behaivor Case "ill" Feind\F_X=Rnd(0,1024) Feind\F_Y=Rnd(0,768) Feind\F_A=Rnd(0,359) Feind\LIFE=Rand(20,60) Feind\SPEED=1 Feind\Typ$ = behaivor$ Feind\Skin = SKIN End Select Next End Function Function B_ILL() If Sqr((SP_X - Feind\F_X)^2 + (SP_Y-Feind\F_Y)^2)>50 Then Feind\F_A = ATan2(SP_Y-Feind\F_Y,SP_X-Feind\F_X) Feind\F_X = Feind\F_X - Cos(Feind\F_A) * Feind\Speed Feind\F_Y= Feind\F_Y + Sin(Feind\F_A) * Feind\Speed End If End Function ;MUSTER .W1 Data 1,"Pistole" ;NAME Data 2,20 ;SCHADEN Data 3,1 ;GEWICHT (IN KILO) Data 4,1 ;KADENZ (IN SEKUNDEN) Data 5,20*15 ;WEITE Data 6,15 ;MAGAZIN Data 7,10 ;M/S Data 8,1 ;ID ;Data 9,1 Schuss Left ;~IDEal Editor Parameters: ;~F#F7#10C#115 ;~C#Blitz3D |
||
Mein Freund und Helfer:
Win7 Home Premium SP1 AMD Athlon II X4 645 3.1GHZ 8GB Ram 64bit |
![]() |
Tennisball |
![]() Antworten mit Zitat ![]() |
---|---|---|
Bei den Globals diese Zeile einfügen dürfte das Problem lösen:
Code: [AUSKLAPPEN] Global Feind.TFeind
Ausserdem würde ich dann in dem Fall in deiner Funktion (B_ILL oder whatever) eine For-Each-Schleife für die Feinde einbauen. |
||
![]() |
XeresModerator |
![]() Antworten mit Zitat ![]() |
---|---|---|
"Es funktioniert nicht" ist in keinem Fall eine gute Fehlerbeschreibung. Computer machen dass, was du ihnen sagt. Sag uns, was du tun willst, und was stattdessen passiert.
Mach den Debugger an, und poste eine ausführliche Fehlermeldung mit der Passenden Zeile, benutze selber DebugLog ![]() ![]() Ja, die Zugriffsvariable eines Types kannst du auch Global ![]() |
||
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) |
![]() |
Sephka |
![]() Antworten mit Zitat ![]() |
---|---|---|
1. Er läuft weg ![]() 2. Wie kann ich verhindern das Negative werte bei der berechnung entstehen? |
||
Mein Freund und Helfer:
Win7 Home Premium SP1 AMD Athlon II X4 645 3.1GHZ 8GB Ram 64bit |
![]() |
XeresModerator |
![]() Antworten mit Zitat ![]() |
---|---|---|
Kleiner Tipp:
BlitzBasic: [AUSKLAPPEN] angle = (-ATan2(ZielY - StartY , ZielX - StartX) + 360) Mod 360 Das gibt den Mathematisch korrekten Winkel 0 <= angle <= 359 Ansonsten würde ich empfehlen, schreibst du ein kleines Testprogramm, um mit Atan2 und ggf. Winkeln umgehen zu lernen. |
||
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) |
![]() |
Sephka |
![]() Antworten mit Zitat ![]() |
---|---|---|
Code: [AUSKLAPPEN] ;GTA by Jonas Hachmeister alias Sephka...
Global gfx_w=1024;1280 Global gfx_h=768;1024 Graphics gfx_w,gfx_h,16,2 SeedRnd MilliSecs() ;GLOBALS Global GRAD#,Angle#,speed# Global S_Timer#=0,Sshoot,WID,SID,WPic Global W1Left,W2Left,S1LEFT,S2LEFT,SLEFT,WLEFT Global Feind.TFeind ;BILDER punch = LoadImage("GFX\Punch.png") ;SOUNDS ZDeath = LoadSound("SFX\E1Kill.wav") Reload = LoadSound("SFX\REload.wav") ;ARRAY Dim WAFFE$ (0,7) Dim Spieler(359) Dim Spieler0(359) Dim spieler1(359) Dim spieler2(359) Dim W0$(0,7) Dim W1$(0,7) Dim W2$(0,7) Dim feind0(359) ;FONT font = LoadFont("Font\Pricedown.ttf",20) font1 = LoadFont("Arial",14) ;SPIELER Global SP_X#=400,SP_Y#=300,SP_LIFE,SP_SPEED,SP_W_ID Global SP_W_RANGE,SP_W_RATE,SP_W_MAGAZIN,SP_W_LEFT Const Grafk_rotate = 5 ;GRAFIK ERSTELLEN TFormFilter 0 Spieler0(0)=LoadImage("GFX\P0.png") MidHandle Spieler0(0) For Angle#=0 To 359 Spieler0(Angle)=CopyImage(Spieler0(0)) MaskImage Spieler0(Angle),255,255,255 RotateImage Spieler0(Angle),Angle Next ;SPIELER MIT PISTOLE spieler1(0)=LoadImage("GFX\P1.png") MidHandle spieler1(0) For Angle#=0 To 359 spieler1(Angle)=CopyImage(spieler1(0)) MaskImage spieler1(Angle),255,255,255 RotateImage spieler1(Angle),Angle Next ;SPIELER MIT PISTOLE spieler2(0)=LoadImage("GFX\P2.png") MidHandle spieler2(0) For Angle#=0 To 359 spieler2(Angle)=CopyImage(spieler2(0)) MaskImage spieler2(Angle),255,255,255 RotateImage spieler2(Angle),Angle Next ;FEINDE Type TFeind Field F_X,F_Y,F_A Field LIFE Field SPEED Field SKIN Field Typ$ Field F_W_ID Field W_RANGE Field W_RATE Field W_MAGAZIN Field W_LEFT End Type feind0(0)=LoadImage("GFX\E1.png") MidHandle feind0(0) For Angle#=0 To 359 feind0(Angle)=CopyImage(feind0(0)) MaskImage feind0(Angle),255,255,255 RotateImage feind0(Angle),Angle Next ;PATRONEN BPatrone = LoadImage("GFX\Patrone.png") Type TPATRONE Field X#,Y#,A#,PX,PY Field SPEED# Field DAMAGE# Field RANGE# End Type ;Waffen file=ReadFile("DATA\W0.dat") For x=0 To 7 W0$(0,x) = ReadLine$(file) Next CloseFile file file=ReadFile("DATA\W1.dat") For x=0 To 7 W1$(0,x) = ReadLine$(file) Next CloseFile file S1LEFT = W1(0,5):W1Left = 5 file=ReadFile("DATA\W2.dat") For x=0 To 7 W2$(0,x) = ReadLine$(file) Next CloseFile file S2LEFT = W2(0,5):W2Left = 5 ChangeWeapon("W0") CreateEnemy(1,0,"ill") SetBuffer BackBuffer() ;################################### ;INCLUDE ;Include "Behaivor\Ill.bb" Repeat ;TASTEN ABFRAGEN If MouseHit(1) Then CreateEnemy(1,0,"ill") If KeyDown(57) And S_Timer=0 And WAFFE(0,7)><0 And SLEFT>0 Then ;SCHUSS[LEERTASTE] SLEFT = SLEFT - 1 Patrone.TPatrone = New TPATRONE Patrone\SPEED = WAFFE(0,6) Patrone\x# = SP_X# + Cos(Angle) * patrone\speed# Patrone\y# = SP_Y# + Sin(Angle) * patrone\speed# Patrone\A# = Angle Patrone\Damage = WAFFE(0,1) Patrone\px = SP_X:Patrone\Py = SP_Y WKadenz = WAFFE(0,3) S_Timer# = MilliSecs()+WKadenz schn = PlaySound(Sshoot) Else If KeyDown(57) And S_Timer=0 And WAFFE(0,7)=0 schn = PlaySound(Sshoot) WKadenz = WAFFE(0,3) WDamage = WAFFE(0,1) WRANGE = WAFFE(0,4) S_Timer# = MilliSecs()+WKadenz For Feind.TFeind = Each TFeind If Sqr((SP_X-Feind\F_X)^2 + (SP_Y-Feind\F_Y)^2)<=WRANGE Then Feind\LIFE = Feind\Life - WDamage:Color 255,255,255:Rect 0,0,100,100,1 Next ;DrawImage Punch,SP_x# + Cos(angle),SP_y# + Sin(angle)*speed End If If KeyDown(203) Then Angle = Angle - 3;DREHEN[<-] If KeyDown(205) Then Angle = Angle + 3;DREHEN[->] If KeyDown(200) Then;VORNE[HOCH] If speed < 0 speed = 0 speed# = speed# + 0.05 ElseIf KeyDown(208) Then;RÜCKWÄRTS[PFEIL UNTEN] If speed > 0 speed = 0 speed# = speed# - 0.025 Else speed = 0 End If ;##WAFFE WECHSELN## If KeyHit(3) Then ChangeWeapon("W1") If KeyHit(4) Then ChangeWeapon("W2") If KeyHit(2) Then ChangeWeapon("W0") ;############################ If Angle > 359 Then Angle = 0 If Angle < 0 Then Angle = 359 Wweight# = WAFFE(0,2):Wweight = Wweight/2 If speed# > 2-Wweight Then speed# = 2-Wweight If speed# < -2+Wweight Then speed# = -2+Wweight SP_X# = SP_X# + Cos(Angle) * speed# SP_Y# = SP_Y# + Sin(Angle) * speed# If SP_X < 1 Then SP_X = 1 If SP_X >gfx_w Then SP_X = gfx_w If SP_Y < 1 Then SP_Y = 1 If SP_Y > gfx_h Then SP_Y = gfx_h DrawImage Spieler(Angle),SP_X,SP_Y;##Spieler Zeichnen## ;WAFFE CHECKEN If SLEFT=0 And WLEFT >0 Then SLEFT = WAFFE(0,5):WLEFT = WLEFT-1:Rchn = PlaySound(Reload):S_Timer = MilliSecs() + 1000 ;FEINDE ZEICHNEN USW... For Feind.Tfeind = Each TFeind B_ILL() If Feind\Skin = 0 Then DrawImage feind0(Feind\F_A),Feind\F_X,Feind\F_Y If Feind\Life<=0 Then If Feind\Skin = 0 Then Dchn = PlaySound(ZDeath) Delete Feind.TFeind End If Next ;##PATRONEN DURCHGEHEN ZEICHNEN\LÖSCHEN...## For PATRONE = Each TPATRONE XD=Patrone\x-Patrone\px YD=Patrone\y-Patrone\py Abstand = Sqr(XD^2 + YD^2) WRANGE = WAFFE(0,4) If Abstand>WRANGE Then Delete Patrone.TPATRONE:Exit Patrone\x# = Patrone\x# + Cos(Patrone\a) * patrone\speed# Patrone\y# = Patrone\y# + Sin(Patrone\a) * patrone\speed# Color 100,100,100 DrawImage BPatrone,PATRONE\x,PATRONE\y For Feind = Each TFeind If ImagesOverlap(BPatrone,Patrone\x,Patrone\y,feind0(0),Feind\F_X,Feind\F_Y)=1 Then Feind\LIFE=Feind\LIFE-Patrone\Damage Delete Patrone.TPatrone:Exit End If Next Next ;##STATUS ZEICHNEN## SetFont font1 If WAFFE(0,7) >< 0 Then Text 1,1,SLEFT+"/"+WLEFT DrawImage WPic,0,gfx_h - 49 SetFont font Color 255,255,255 Text 55,gfx_h - 49,WAFFE(0,0) Flip Cls If S_Timer < MilliSecs() Then S_Timer = 0 Until KeyHit(1) Function ChangeWeapon(WID$) ;WAFFEN If WAFFE(0,7) = 1 Then S1LEFT=SLEFT:W1Left=WLEFT If WAFFE(0,7) = 2 Then S2LEFT=SLEFT:W2Left=WLEFT For x=0 To 7 If WID$="W0" Then WAFFE(0,x)=W0(0,x) If WID$="W1" Then WAFFE(0,x)=W1(0,x):SLEFT=S1LEFT:WLEFT=W1Left If WID$="W2" Then WAFFE(0,x)=W2(0,x):SLEFT=S2LEFT:WLEFT=W2Left Next If WID$="W0" Then ChangeSkin("S0") If WID$="W1" Then ChangeSkin("S1") If WID$="W2" Then ChangeSkin("S2") Sshoot = LoadSound("SFX\WAFFE_"+WAFFE(0,7)+".wav") WPic = LoadImage("GFX\W"+WAFFE(0,7)+".png") MaskImage WPic,255,0,0 End Function Function ChangeSkin(SID$) For x=0 To 359 If SID$ = "S0" Then Spieler(x) = Spieler0(x) If SID$ = "S1" Then Spieler(x) = spieler1(x) If SID$ = "S2" Then Spieler(x) = spieler2(x) Next End Function Function CreateEnemy(anzahl%,SKIN,behaivor$) For x=0 To anzahl Feind.Tfeind = New TFeind Select behaivor Case "ill" Feind\F_X=Rnd(0,1024) Feind\F_Y=Rnd(0,768) Feind\F_A=Rnd(0,359) Feind\LIFE=Rand(20,60) Feind\SPEED=1 Feind\Typ$ = behaivor$ Feind\Skin = SKIN End Select Next End Function Function B_ILL() ;If Sqr((SP_X-Feind\F_X)^2 + (SP_Y-Feind\F_Y)^2)<200 Then Feind\F_A = (-ATan2(Feind\F_Y-SP_Y,Feind\F_X-SP_Y) + 360)Mod 360 If Feind\F_A = 360 Then Feind\F_A = 0 DebugLog Feind\F_A Feind\F_X = Feind\F_X - Cos(Feind\F_A) * Feind\Speed Feind\F_Y= Feind\F_Y + Sin(Feind\F_A) * Feind\Speed ;End If End Function ;MUSTER .W1 Data 1,"Pistole" ;NAME Data 2,20 ;SCHADEN Data 3,1 ;GEWICHT (IN KILO) Data 4,1 ;KADENZ (IN SEKUNDEN) Data 5,20*15 ;WEITE Data 6,15 ;MAGAZIN Data 7,10 ;M/S Data 8,1 ;ID ;Data 9,1 Schuss Left ;~IDEal Editor Parameters: ;~F#F7#10C#115 ;~C#Blitz3D So es klappt aber nicht ganzzz super... hat noch jemand einen Tipp? |
||
Mein Freund und Helfer:
Win7 Home Premium SP1 AMD Athlon II X4 645 3.1GHZ 8GB Ram 64bit |
Übersicht


Powered by phpBB © 2001 - 2006, phpBB Group