gta steuerung collis?

Übersicht BlitzBasic Allgemein

Neue Antwort erstellen

dimaster

Betreff: gta steuerung collis?

BeitragSa, Apr 24, 2004 20:40
Antworten mit Zitat
Benutzer-Profile anzeigen
ich möchte in meinem rpg-shoter gta steuerung machen,was übrigens nicht das problem ist aber wie bekomme ich die kollisionen hin?
hier mal der


Code: [AUSKLAPPEN]

Graphics 640,480,32,1
SetBuffer BackBuffer()
tile   = LoadAnimImage("gfx/tileset2.bmp",32,32,0,47)
tile1  = LoadAnimImage("gfx/tileset1.bmp",32,32,0,47)
char   = LoadAnimImage("gfx/p.bmp",32,32,0,1)
char1  = LoadAnimImage("gfx/d1u.bmp",32,32,0,4)
kugel  = LoadImage("gfx/kugel.bmp")
laute  = LoadImage("gfx/endeker.bmp")
wasser = LoadImage("gfx/wasser.bmp")

px = 10
py = 7
geg_x=8
geg_y=16
geg1_x=12
geg1_y=50
move = 1
Dim schuss(20,3)
Dim map(200,200)

frm# = 0
frm1# = 0

Repeat
Cls

   If MilliSecs() > tmrSparks + 100 Then
      tmrSparks=MilliSecs()
      frmSparks=(frmSparks + 1) Mod 3
   End If

wg# = wg#+0.2
tg# = tg#+1.8
tz# = tz#-1

If KeyHit(1) Then Exit

For x = 0 To 200
For y = 0 To 200
DrawImage tile,x*32-scrollx,y*32-scrolly,map(x,y)
Next
Next

For x = 0 To 200
For y = 0 To 200
DrawImage tile1,x*32-scrollx,y*32-scrolly,map(x,y)
Next
Next

load()

DrawImage char1,geg_x*32-scrollx,geg_y*32-scrolly
If move = 1 Then x = px * 32: y = py * 32:DrawImage char,x-scrollx,y-scrolly,frm:Delay 60
 

If KeyDown(208) Then
 If map(px,py+1) < 12 Then
  py = py + 1
  scrolly = scrolly + 32
  move = 1
 End If
End If

If KeyDown(200) Then
 If map(px,py-1) < 12 Then
  py = py - 1
  scrolly = scrolly - 32
  move = 1
 End If
End If

If KeyDown(203) Then
 If map(px-1,py) < 12 Then
  px = px - 1
  scrollx = scrollx - 32
  move = 1
 End If
End If

If KeyDown(205) Then
 If map(px+1,py) < 12 Then
  px = px + 1
  scrollx = scrollx + 32
  move = 1
 End If
End If

If KeyHit(57) Then
If map(px,py) = 2 Then
lv1 = lv2
End If
End If

If geg_sicht=False
If MilliSecs()-rndtimer>500 Then   
 geg_dir=Rand(1,4)
 zap=1
 rndtimer=MilliSecs()
EndIf
;###########  NPC-Bewegungsroutine(Zufall) #############
If geg_dir=1 Then
 If zap=1 Then
  If map(geg_x,geg_y+1)<12 Then ;<----kollsionsabfrage
   geg_y=geg_y+1
   zap=0
  EndIf
 EndIf
EndIf
If geg_dir=2 Then
 If zap=1 Then
  If map(geg_x,geg_y-1)<12 Then
   geg_y=geg_y-1
   zap=0
  EndIf
 EndIf
EndIf
If geg_dir=3 Then
 If zap=1 Then
  If map(geg_x+1,geg_y)<12 Then
   geg_x=geg_x+1
   zap=0
  EndIf
 EndIf
EndIf
If geg_dir=4 Then
 If zap=1 Then
  If map(geg_x-1,geg_y)<12 Then
   geg_x=geg_x-1
   zap=0
  EndIf
 EndIf
EndIf
EndIf

For i=-3 To 3                          ;hier ist die überprüfung ob du dich in sichtweite des gegners befindest
 For j=-3 To 3
  If geg_x-j=px And geg_y-i=py Then
   DrawImage laute,0,84
   Text 100,100,"DU WURDEST GESEHEN ..."
   geg_sicht=True
  EndIf
 Next
Next

If geg_sicht=True Then
 If MilliSecs()-timer>300 Then   
  zap2=1
  timer=MilliSecs()
 EndIf
 If geg_x<px Then
  If zap2=1 Then
   If map(geg_x+1,geg_y)<12 Then
    geg_x=geg_x+1
    frm1 = 0
    zap2=0
   EndIf
  EndIf
 EndIf
 If geg_x>px Then
  If zap2=1 Then
   If map(geg_x-1,geg_y)<12 Then
    geg_x=geg_x-1
    frm1 = 3
    zap2=0
   EndIf
  EndIf
 EndIf
 If geg_y+3<py Then
  If zap2=1 Then
   If map(geg_x,geg_y+1)<12 Then
    geg_y=geg_y+1
    frm1 = 1
    zap2=0
   EndIf
  EndIf
 EndIf
 If geg_y-3>py Then
  If zap2=1 Then
   If map(geg_x,geg_y-1)<12 Then
    geg_y=geg_y-1
    frm1 = 2
    zap2=0
   EndIf
  EndIf
 EndIf
 If MilliSecs()-schusszeit>400 Then     ;schussfolge - wenn man höher stellt schießt der gegner langsamer
  fire=1
  schusszeit=MilliSecs()
 EndIf
 For k=0 To 20
  If geg_y=py Then
   If fire=1 Then
    schuss(nr,0)=1
    schuss(nr,1)=geg_x*32
    schuss(nr,2)=geg_y*32
    If geg_x<px Then schuss(nr,3)=1     ;schussrichtung-rechts
    If geg_x>px Then schuss(nr,3)=2     ;              -links
    fire=0
    nr=nr+1
   EndIf
  EndIf
  If geg_x=px Then
   If fire=1 Then
    schuss(nr,0)=1
    schuss(nr,1)=geg_x*32
    schuss(nr,2)=geg_y*32
    If geg_y<py Then schuss(nr,3)=3     ;              -unten
    If geg_y>py Then schuss(nr,3)=4     ;              -oben
    fire=0
    nr=nr+1
   EndIf
  EndIf
   If schuss(k,3)=1 Then                                      ;ab hier wird überprüft in welche richtung der schuss gehen soll
    If schuss(k,0)=1 Then
     DrawImage kugel,schuss(k,1)-scrollx,schuss(k,2)-scrolly
     schuss(k,1)=schuss(k,1)+10
    EndIf
   EndIf
   If schuss(k,3)=2 Then
    If schuss(k,0)=1 Then
     DrawImage kugel,schuss(k,1)-scrollx,schuss(k,2)-scrolly
     schuss(k,1)=schuss(k,1)-10
    EndIf
   EndIf
   If schuss(k,3)=3 Then
    If schuss(k,0)=1 Then
     DrawImage kugel,schuss(k,1)-scrollx,schuss(k,2)-scrolly
     schuss(k,2)=schuss(k,2)+10
    EndIf
   EndIf
   If schuss(k,3)=4 Then
    If schuss(k,0)=1 Then
     DrawImage kugel,schuss(k,1)-scrollx,schuss(k,2)-scrolly
     schuss(k,2)=schuss(k,2)-10
    EndIf
   EndIf
   If nr=20 Then nr=1 

 Next   
EndIf

Flip
Forever
Function load()
karte$ = ReadFile("map1.map")
For x = 0 To 200
For y = 0 To 200
tile = ReadLine(karte$)
map(x,y) = ReadInt(karte$)
Next
Next
CloseFile(karte$)
End Function
 

x.Force

BeitragSa, Apr 24, 2004 22:42
Antworten mit Zitat
Benutzer-Profile anzeigen
sag ma du schmeisst uns immer code hin, sollen wir/die dir gleich das ganze Spiel machen? und mit kommentaren sparst du auch. Gib dir doch mal ein bisschen mühe und lass nicht das ganze game von anderen machen.

das wollte ich nur loswerden

Cu
Basti

AMD Athlon XP 2000+ | 1024mb DDR-Ram | Asus Radeon 9600XT | BENQ FP757 17°Zoll TFT

Was kümmert mich mein Geschwätz von gestern? (Konrad Adenauer) -.-

Neue Antwort erstellen


Übersicht BlitzBasic Allgemein

Gehe zu:

Powered by phpBB © 2001 - 2006, phpBB Group