Collison Buggt <---- Help :-)

Übersicht BlitzBasic Beginners-Corner

Neue Antwort erstellen

Hellchest

Betreff: Collison Buggt <---- Help :-)

BeitragDo, März 17, 2005 19:03
Antworten mit Zitat
Benutzer-Profile anzeigen
Hy leute,

bitte weiter unten lesen
  • Zuletzt bearbeitet von Hellchest am Do, März 17, 2005 23:41, insgesamt 2-mal bearbeitet

Artemis

BeitragDo, März 17, 2005 19:21
Antworten mit Zitat
Benutzer-Profile anzeigen
https://www.blitzforum.de/view...hysik+ball

Spikespine

BeitragDo, März 17, 2005 19:23
Antworten mit Zitat
Benutzer-Profile anzeigen
Hier.
Mit den Werten kann rumgespielt werden.

Ist aber ohne erklärung.

[edit] oh, ich hab den voreingestellten Luftwiderstand sehr hoch gesetzt. wirkt vllt. ein bisserl unrealistisch obwohl es das nicht unbedingt ist.
Setzt ihn einfach auf .995 dann ist er besser [/edit]

BlitzBasic: [AUSKLAPPEN]
Graphics 800,600,16,2

SetBuffer BackBuffer()

x#=300 ;startposition x
y#=50 ;und y

xspeed#=2.0 ;startspeed x
yspeed#=0.0

Const schwerkraft#= .2
Const luftwiderstand# = .98
Const ballgroesse = 10 ;Radius

Repeat
Cls

yspeed = (yspeed + schwerkraft)*luftwiderstand
xspeed = xspeed * luftwiderstand

y=y+yspeed
x=x+xspeed

If x<0 Then
x=0
xspeed= -xspeed*0.9
ElseIf x>800-ballgroesse Then
x=800-ballgroesse
xspeed= -xspeed*0.9
EndIf

If y>600-ballgroesse Then
y=600-ballgroesse
yspeed=(-yspeed*0.9)-0.1
EndIf

Oval x-ballgroesse,y-ballgroesse,ballgroesse*2,ballgroesse*2

Flip
Until KeyHit(1)
Athlon 64 3700+ | 1024 MB RAM | GeForce 7900 GT | Blitz2D, Blitz3D, BlitzPlus, BlitzMax

Artemis

BeitragDo, März 17, 2005 19:37
Antworten mit Zitat
Benutzer-Profile anzeigen
ist aber unlogisch, das wenn die schwerkraft sehr niedrig ist, dass der ball nur wenig abprallt!

Hellchest

BeitragDo, März 17, 2005 19:52
Antworten mit Zitat
Benutzer-Profile anzeigen
die ballphysik funktioniert ganz gut.
danek JonasCleve

aber die Collsionen sucken


BlitzBasic: [AUSKLAPPEN]



;main Menü
Graphics 800,600
SetBuffer BackBuffer()
Global player_1 = LoadImage(\"data/player.bmp\")
Global player_2 = LoadImage(\"data/player.bmp\")
Global player_3 = LoadImage(\"data/shield.bmp\")
Global player_4 = LoadImage(\"data/shield_2.bmp\")
Global menu2 = LoadImage(\"data/menu2.bmp\")
Global ball = LoadImage(\"data/ball.bmp\")
Global menu = LoadImage(\"data/menu.jpg\")
Global menu1 = LoadImage(\"Data/menu1.jpg\")
Global x1,x2,ein1,ein2,ende,ki
Global ox,oy,die,speed,hohe,was2,was1,y,y2,erg1%,erg2%
Global lin1 = LoadImage(\"data/line.bmp\")
Global lin2 = LoadImage(\"data/line.bmp\")
Global ton = LoadSound(\"Data/sound1.wav\")
Global ton2 = LoadSound(\"Data/033.wav\")
Global win1 = LoadImage(\"data/win1.bmp\")
Global win2 = LoadImage(\"data/win2.bmp\")
Global x5 = 400
Global y5 = 300
Global speedx# = 2
Global speedy# = 1
Global clear = 1
Global anzeige = 1
Global ab=5
Kanal = PlayMusic(\"data/music.mid\")
Repeat
hauptmenu()
SetBuffer BackBuffer()
WaitKey
x1=10
x2=10
ende = False;Wenn True zurück ins Hauptmenü
was1 = False;Schild links = aus
was2 = False;Schild rechts = aus
ein1 = True;Wenn false Schildenergie links = 0
ein2 = True;Wenn false Schildenergie rechts = 0
speed = Rnd(-1,-5);Geschwindigkeit des Balles
hohe = Rnd(-5,5);Position des Balles in der höhe(y-achse)
ox = 380;x Position des Balles
oy = 280;y Position des Balles
erg1% = 0;Punktzahl des linken Spielers
erg2% = 0;Punktzahl des rechten Spielers
While ende = False
if_()
Cls
text_draw()
physik()
If ChannelPlaying(channel1)=0 Then channel1=PlaySound(music)
Flip
Wend
Until KeyDown(1)
End

Function text_draw()
Text(250,100,erg2%)
Text(450,100,erg1%)
Text(350,100,\":\")
Text(250,(75),\"Schildenergie : \" + x1)
Text(450,(75),\"Schildenergie : \" + x2)
DrawImage player_1,0,y2
DrawImage player_2,770,y
If ein1 = True If was1 = True DrawImage player_3,0,(y2-100)
If ein2 = True If was2 = True DrawImage player_4,550,(y-100)
DrawImage ball,ox,oy
Color 0,0,255
Rect 0,0,800,5,1
Rect 0,598,800,5,1
Color 255,255,255
End Function

Function if_()
If KeyHit(68) StopChannel(kanal1)
If KeyDown(208) y = y + 5
If KeyDown(200) y = y - 5
If y < 0 y = 0
If y > 490 y = 490
If ki_move = False
If KeyDown(31) y2 = y2 + 5
If KeyDown(17) y2 = y2 - 5
EndIf
If y2 < 0 y2 = 0
If y2 > 490 y2 = 490
If x1 = 0 ein1 = False
If x2 = 0 ein2 = False
If x1 > 0 ein1 = True
If x2 > 0 ein2 = True
If KeyDown(203) was2 = True PlaySound ton2
If KeyDown(205) was2 = False
If ki_move = False
If KeyDown(32) was1 = True PlaySound ton2
If KeyDown(30) was1 = False
EndIf
If erg1% > 24 Print(\"Player 1 win\") Delay 5000 ende = True
If erg2% > 24 Print(\"Player 2 win\") Delay 5000 ende = True
If KeyHit(1) ende = True:hauptmenu()
End Function

Function physik()
If ImagesCollide(ball,ox,oy,0,player_1,0,y2,0) speedy = Rnd(-3,3)
If ImagesCollide(ball,ox,oy,0,player_2,770,y,0) speedx = Rnd(-3,3)
If ein1 = True If was1 = True If ImagesCollide(ball,ox,oy,0,player_3,0,(y2-100),0) speedy = speedy + 1 + x1:x1=x1-1
If ein2 = True If was2 = True If ImagesCollide(ball,ox,oy,0,player_4,550,(y-100),0) speedx = speedx - 1 - x2:x2=x2-1
ox = ox + speedx
If ImageRectCollide(ball,ox,oy,0,0,0,794,5) speedy = speedy + Rnd(-3,3);
If ImageRectCollide(ball,ox,oy,0,0,590,794,5) speedy = speedy - Rnd(-3,3) ;
oy = oy + speedy
If ox < 0 ox = 1: speedx = Rnd(5,10): erg1% = erg1% + 1:x2 = x2 + 1:x4 = x4 + 1
If ox > 800 ox = 769: speedx = Rnd(-10,-5): erg2% = erg2% + 1: x1 = x1 + 1:x3 = x3 + 1
If oy < 0 oy = 1:speedy = speedy - (2*speedy)
If oy > 584 oy = 584: speedy = speedy - (2*speedy)
End Function
Function hauptmenu()
ki_move = False
While start = False
start = False
DrawImage menu,0,0
DrawImage menu2,300,450
DrawImage menu1,92,0
Text(50,225,\"Zum Verlassen E drücken\")
Text(50,255,\"Ziel ist es zuerst 25 'Tore' zu schießen.\")
Text(50,270,\"Die Schilde laden sich mit jedem Tor um eins auf\")
Text(50,285,\"esc zurück ins Hauptmenü\")
Text(50,315,\"F2 KI An Schalten. F3 Ki Aus\")
Text(50,300,\"F1 Taste gedrückt halten um Steuerung Anzuzeigen.(nur im Hauptmenü) \")
Text(300,435,\"Drücke ´Leertaste´ zum Starten. Esc zum beenden.\")
Text(300,500,\"Version 0.90\")
Text(50,330,\"KI =\" + ki_move )
Text(50,345,\"KI Stärke =\" + ab )
If KeyHit(1) hauptmenu()
If KeyHit(18) End
If KeyHit(60) ki_move = True
If KeyDown(61) ki_move = False
If KeyDown(57) Text(350,100,\"Neuer Start\"):start = True
test = False
If KeyDown(59) test = True
If test = True
Cls
DrawImage menu,0,00
DrawImage menu2,300,450
Text(50,150,\"Anleitung : \")
Text(50,165,\"Spieler 1 (linke Seite) Spieler 2 (rechte Seite)\")
Text(50,180,\"´w´ = hoch ´Pfeil-hoch-Taste´ = hoch\")
Text(50,195,\"´s´ = runter ´Pfeil-runter-Taste´ = runter\")
Text(50,210,\"´d´ = Schild an ´Pleil-links-Taste´ = Schild an\")
Text(50,225,\"´a´ = Schild aus ´Pfeil-rechts-Taste´ = Schild aus\")
EndIf
Flip
Wend
End Function
Function Ki(starke)
If ki_move = True
If y2 < oy y2 = (y2+5) + starke
If y2 > oy y2 = (y2+5) - starke
EndIf
End Function


Repeat
If clear = 1 Then Cls

If KeyHit(199) Then
Select clear
Case 1 clear = 0
Case 0 clear = 1
End Select
EndIf

If KeyHit(200) Then
If speedx <= 0 Then speedx=speedx-1
If speedx >= 0 Then speedx=speedx+1
EndIf

If KeyHit(208) Then
If speedx <= 0 Then speedx=speedx+1
If speedx >= 0 Then speedx=speedx-1
EndIf

If KeyHit(203) Then
If speedy <= 0 Then speedy=speedy-1
If speedy >= 0 Then speedy=speedy+1
EndIf

If KeyHit(205) Then
If speedy <= 0 Then speedy=speedy+1
If speedy >= 0 Then speedy=speedy-1
EndIf

ox = ox + speedx
oy = oy + speedy

If speedy < 0 Then speedy = speedy+0.5
If speedy > 0 Then speedy = speedy+0.5

If speedx < 0 Then speedx = speedx+0.5
If speedx > 0 Then speedx = speedx-0.5




If ox < 0 Then speedx=speedx*-1
If oy > 780 Then speedx=speedx*-1

If oy < 0 Then speedy=speedy*-1
If ox > 560 Then speedy=speedy*-1




falls ihr testen wollt was suckt kopiert das in die Browserleiste xD

clangsd.cl.funpic.de/ping.rar

musste es ohne http:// machen da externe links net gestattet sind
so umgeht man es an alle funpic.de user xD

Spikespine

BeitragDo, März 17, 2005 20:06
Antworten mit Zitat
Benutzer-Profile anzeigen
@JonasCleve
das abprallen des Balles hat erstmal nichts mit der Schwerkraft zu tun.
Sondern von der Geschwindigkeit und der Reibung
verändere doch mal den Luftwiderstand auf .995 und folgende Zeile:
BlitzBasic: [AUSKLAPPEN]
yspeed=(-yspeed*0.9)-0.1

so:
BlitzBasic: [AUSKLAPPEN]
 yspeed=(-yspeed*0.99)-0.05


Das muss natürlich angepasst werden wie man wünscht.
Athlon 64 3700+ | 1024 MB RAM | GeForce 7900 GT | Blitz2D, Blitz3D, BlitzPlus, BlitzMax

Hellchest

BeitragDo, März 17, 2005 20:27
Antworten mit Zitat
Benutzer-Profile anzeigen
soll ich das einfach einfügen?

und noch ne frage

BlitzBasic: [AUSKLAPPEN]

If KeyDown(57) key =True
If key = True
Cls
DrawImage load,0,0
Delay 5000
:start = True
key = False
EndIf


warum führt der cls nicht aus?
da ich gerne nen Ladesceen hätte
die image wird bloß 1 milsec eingeblended xD

Spikespine

BeitragDo, März 17, 2005 20:32
Antworten mit Zitat
Benutzer-Profile anzeigen
Ich schätze, er führt das Cls schon aus, aber danach zeichnest du das bild doch?!
Athlon 64 3700+ | 1024 MB RAM | GeForce 7900 GT | Blitz2D, Blitz3D, BlitzPlus, BlitzMax

Hellchest

BeitragDo, März 17, 2005 20:35
Antworten mit Zitat
Benutzer-Profile anzeigen
jo aber
ich sehe nix von


Cls


die TExte und der Hintergrund vom Haputmenü sind noch da...

das blid wrid nur kz eingeblendet...
 

Gerhard

BeitragDo, März 17, 2005 20:46
Antworten mit Zitat
Benutzer-Profile anzeigen
Ohne flip siehst du nichts, wartest aber dank delay.

Hellchest

BeitragDo, März 17, 2005 23:40
Antworten mit Zitat
Benutzer-Profile anzeigen
Embarassed Embarassed Embarassed oops xD
vergessen kann sich aber noch jemand um die


Collisionen kümmern?

da es irgendwie bugt....

Neue Antwort erstellen


Übersicht BlitzBasic Beginners-Corner

Gehe zu:

Powered by phpBB © 2001 - 2006, phpBB Group