Ball bewegen

Übersicht BlitzBasic Beginners-Corner

Neue Antwort erstellen

ToeB

Betreff: Ball bewegen

BeitragSa, Dez 02, 2006 14:20
Antworten mit Zitat
Benutzer-Profile anzeigen
wie kann ich einen Ball realistisch bewegen?
Ich meine das der von alleine von den "Wänden" apprallt.



Danke schon mal...
Religiöse Kriege sind Streitigkeiten erwachsener Männer darum, wer den besten imaginären Freund hat.
Race-Project - Das Rennspiel der etwas anderen Art
SimpleUDP3.0 - Neuste Version der Netzwerk-Bibliothek
Vielen Dank an dieser Stelle nochmal an Pummelie, welcher mir einen Teil seines VServers für das Betreiben meines Masterservers zur verfügung stellt!
 

Lion

BeitragSa, Dez 02, 2006 14:34
Antworten mit Zitat
Benutzer-Profile anzeigen
2D oder 3D ?
2D gabs glaub ich nen Beispiel bei Blitz3D dabei...

mfg
Intel Core 2 Quad 4x2.66 ghz - 4gb ddr2 - nvidia GeForce GTX660 2gb
Intel Atom 1x1.83 ghz - 2gb ddr2 - intel GMA 3150 256mb
AMD A10-5750M 4x2.5 ghz - 8 gb ddr4 - AMD R9 M290x

ToeB

BeitragSa, Dez 02, 2006 14:36
Antworten mit Zitat
Benutzer-Profile anzeigen
2D...
Kann mia jemand helfen ?
Sad
büdde...
Religiöse Kriege sind Streitigkeiten erwachsener Männer darum, wer den besten imaginären Freund hat.
Race-Project - Das Rennspiel der etwas anderen Art
SimpleUDP3.0 - Neuste Version der Netzwerk-Bibliothek
Vielen Dank an dieser Stelle nochmal an Pummelie, welcher mir einen Teil seines VServers für das Betreiben meines Masterservers zur verfügung stellt!

Goodjee

BeitragSa, Dez 02, 2006 14:48
Antworten mit Zitat
Benutzer-Profile anzeigen
wie wärs wenn du dir selber was ausdenkst?

Oder zeig mal deinen ansatz
"Ideen sind keine Coladosen, man kann sie nicht recyclen"-Dr. House
http://deeebian.redio.de/ http://goodjee.redio.de/

Hagbard

BeitragSa, Dez 02, 2006 14:50
Antworten mit Zitat
Benutzer-Profile anzeigen
Ok, ein Ansatz:

*Da fällt mir gerade ein*
Wie sollen wir dir helfen?
Es gibt so viele Ballbewegungen!

DerHase

BeitragSa, Dez 02, 2006 15:02
Antworten mit Zitat
Benutzer-Profile anzeigen
Ne einfache Variante die oftmals ausreicht ist, bei einer Kollision rechts oder links, die X-Geschwindigkeit mal -1 zu nehmen, und bei der Kollision oben oder unten entsprechend Y-Geschwindigkeit mal -1.
Play Satyr!

TheMatrix

BeitragSa, Dez 02, 2006 15:04
Antworten mit Zitat
Benutzer-Profile anzeigen
Genau so macht man das. Mann gibt den Winkel vorher vor und lässt dan den Ball damit sich bewegen. Wenn der Ball nun ein Gegenstand berührt, so nimmt man die Geschwindigkeit *-1. Hier mal ein kurzes Beispiel:

Code: [AUSKLAPPEN]

Graphics 640,480,16,2

SetBuffer BackBuffer()

start=1
While Not KeyHit(1)
 Cls : mx = MouseX() : my = MouseY()

 If start=1
   Text 0,0,"Setze den Abschusswinkel und bestätige mit der Maustaste"
 
   w# = ATan2(mx,my-240) ; Ermittle den Winkel zwischen Maus und Startpunkt

   Line 0,240,Sin(w#)*100,240+Cos(w#)*100 ; Zeichne eine Linie, die immer auf die Maus zeigt

   If MouseDown(1) Then start=0 : ball_speedx = 5 : ball_speedy = 5 : ball_y = 240
  Else
   Color 255,0,0 : Oval ball_x,ball_y,20,20

   ball_x = ball_x + Sin(w#)*ball_speedx ; Ball wird im Winkel bewegt
   ball_y = ball_y + Cos(w#)*ball_speedy

   ; Kollisionsabfrage mit Bildschirm x<0 & x+ball_größe>640
   If ball_x<0 Then ball_x = 0           : ball_speedx = ball_speedx*-1
   If ball_x+20>640 Then ball_x = 620    : ball_speedx = ball_speedx*-1

   ; Kollisionsabfrage mit Bildschirm y<0 & y+ball_größe>480
   If ball_y<0 Then ball_y = 0          : ball_speedy = ball_speedy*-1
   If ball_y+20>480 Then ball_y = 460   : ball_speedy = ball_speedy*-1 

 End If
 

 Flip 0 : Delay 5
Wend
°_° °.° °~° °v° .. -.-

ToeB

BeitragSa, Dez 02, 2006 15:09
Antworten mit Zitat
Benutzer-Profile anzeigen
hmm...ich hab da echt keine idee zu, außer :


Zitat:

1.: den abstoßwinkel berechen, weiß aba ach nich wie das get

2.: ball malen, weiß ich wie das get aba nich wie man den ball malen muss das der von alleine sich beweget

3.: rahmen festlegen, das der nich aus dem bildschirm hüpft

Ich weiß das das eventuell nich in der richtigen reihenfolge is Wink
Religiöse Kriege sind Streitigkeiten erwachsener Männer darum, wer den besten imaginären Freund hat.
Race-Project - Das Rennspiel der etwas anderen Art
SimpleUDP3.0 - Neuste Version der Netzwerk-Bibliothek
Vielen Dank an dieser Stelle nochmal an Pummelie, welcher mir einen Teil seines VServers für das Betreiben meines Masterservers zur verfügung stellt!

TheMatrix

BeitragSa, Dez 02, 2006 15:19
Antworten mit Zitat
Benutzer-Profile anzeigen
1. Abstoss berechnet man mit Atan2(Ziel x - Mom. Pos X, Ziel y - Mom. Pos Y).
Als Ergebniss bekommst du einen Winkel, mit den du deinen Ball bewegen kannst. Siehe auch Onlinehilfe
2. Malen kannst du immer dein Ball mit drawimage oder oval Wink Auf dem Bildschirm verschieben tust den mit x = x + sin(der Winkel von vorhin); y = y + cos(...). Siehe Onlinehilfe....
3. Kannst du nichtmal das einfache if then??? Du scheints dich ja so richtig zu bemühen, dein Problem zu lösen ^^.
Hier ich geb dir mal einen Gedankenanstoss:
if x<Rahmen Links, if x>Rahmen Rechts, if y< Rahmen un... Rolling Eyes
Streng dich mal bitte ein wenig mehr an, ok? Wink
°_° °.° °~° °v° .. -.-

ToeB

BeitragSa, Dez 02, 2006 16:06
Antworten mit Zitat
Benutzer-Profile anzeigen
ok...
Code: [AUSKLAPPEN]

Graphics 1600,1200,0,1
Schrift = LoadFont("Andy",50,1,0,0):SetFont Schrift
NormalS = LoadFont("Times New roman",20,1,0,0)

Geschw = Input("Spiel Geschwindigkeit :")
SetFont NormalS
 
Balken = CreateImage(50,300)
SetBuffer ImageBuffer(Balken)
Color 100,100,0
Rect 0,20,50,300

Cpu_Balken = CreateImage(50,300)
SetBuffer ImageBuffer(Cpu_Balken)
Color 100,100,0
Rect 0,20,50,300

SetBuffer BackBuffer()

start=1
While Not KeyHit(1)

Cpu_bally = ball_y
Cls : mx = MouseX() : my = MouseY()
If KeyDown(200) Then y = y - Geschw
If KeyDown(208) Then y = y +Geschw
If y <= 1 Then y = 1
If y >= 900 Then y = 900
If start=1

w# = ATan2(mx,my-240) ; Ermittle den Winkel zwischen Maus und Startpunkt

Line 0,240,Sin(w#)*100,240+Cos(w#)*100 ; Zeichne eine Linie, die immer auf die Maus zeigt

If MouseHit(1) Then Cls:start=0 : ball_speedx = Geschw : ball_speedy = Geschw: ball_y = 240
Else
Color 255,0,0 : Oval ball_x,ball_y,50,50

ball_x = ball_x + Sin(w#)*ball_speedx ; Ball wird im Winkel bewegt
ball_y = ball_y + Cos(w#)*ball_speedy

; Kollisionsabfrage mit Bildschirm x<0 & x+ball_größe>640
If ball_x<0 Then ball_x = 0 : ball_speedx = ball_speedx*-1
If ball_x+20>1550 Then ball_x = 1550 : ball_speedx = ball_speedx*-1

; Kollisionsabfrage mit Bildschirm y<0 & y+ball_größe>480
If ball_y<0 Then ball_y = 0 : ball_speedy = ball_speedy*-1
If ball_y+20>1150 Then ball_y = 1150 : ball_speedy = ball_speedy*-1

If ImageRectCollide(Balken,1,y,0,ball_x,ball_y, 50,50) Then
ball_speedy = ball_speedy*-1
ball_speedx = ball_speedx*-1
Points = Points + 1
EndIf

If ImageRectCollide(Cpu_Balken,1550,Cpu_bally,0,ball_x,ball_y, 50,50) Then
ball_speedy = ball_speedy*-1
ball_speedx = ball_speedx*-1

EndIf

If Cpu_bally >= 900 Then Cpu_bally = 900
If Cpu_bally <= 0 Then Cpu_bally = 0

If ball_x = 0 And ball_y >0 Then Points = Points - 1

End If
DrawImage Cpu_Balken,1550,Cpu_bally
DrawImage Balken,1,y
SetFont NormalS
Text 1,1000,Points
Flip 0 : Delay 5
Wend
End

das is ein code den ich bisher "überschrieben" habe(von : TheMatrix)
jetzt hab ich aba 'n neues problem:
wie kann ich das jetzt machen, das der Ball,wenn dieaser den Cpu_Balken trifft dan auch aprallt wie bei dem von dem SpielER !?
Religiöse Kriege sind Streitigkeiten erwachsener Männer darum, wer den besten imaginären Freund hat.
Race-Project - Das Rennspiel der etwas anderen Art
SimpleUDP3.0 - Neuste Version der Netzwerk-Bibliothek
Vielen Dank an dieser Stelle nochmal an Pummelie, welcher mir einen Teil seines VServers für das Betreiben meines Masterservers zur verfügung stellt!

DerHase

BeitragSa, Dez 02, 2006 16:07
Antworten mit Zitat
Benutzer-Profile anzeigen
Genau so ?!
Play Satyr!

TheMatrix

BeitragSa, Dez 02, 2006 16:17
Antworten mit Zitat
Benutzer-Profile anzeigen
Jo, so oder so ähnlich. Ich würde für so ein Spiel aber nicht so eine heftige Auflösung nehmen und es wäre gut, wenn der Ball auch rausfliegen kann. Das kann ja deine nächste Aufgabe sein Wink .
°_° °.° °~° °v° .. -.-

ToeB

BeitragSa, Dez 02, 2006 16:18
Antworten mit Zitat
Benutzer-Profile anzeigen
ja...jetzt hab ich ersma so gemacht, das mit den punket und so...^^
Religiöse Kriege sind Streitigkeiten erwachsener Männer darum, wer den besten imaginären Freund hat.
Race-Project - Das Rennspiel der etwas anderen Art
SimpleUDP3.0 - Neuste Version der Netzwerk-Bibliothek
Vielen Dank an dieser Stelle nochmal an Pummelie, welcher mir einen Teil seines VServers für das Betreiben meines Masterservers zur verfügung stellt!

Neue Antwort erstellen


Übersicht BlitzBasic Beginners-Corner

Gehe zu:

Powered by phpBB © 2001 - 2006, phpBB Group