Das deutsche QBasic- und FreeBASIC-Forum Foren-Übersicht Das deutsche QBasic- und FreeBASIC-Forum
Für euch erreichbar unter qb-forum.de, fb-forum.de und freebasic-forum.de!
 
FAQFAQ   SuchenSuchen   MitgliederlisteMitgliederliste   BenutzergruppenBenutzergruppen  RegistrierenRegistrieren
ProfilProfil   Einloggen, um private Nachrichten zu lesenEinloggen, um private Nachrichten zu lesen   LoginLogin
Zur Begleitseite des Forums / Chat / Impressum
Aktueller Forenpartner:

openb3d kolisions frage

 
Neues Thema eröffnen   Neue Antwort erstellen    Das deutsche QBasic- und FreeBASIC-Forum Foren-Übersicht -> Allgemeine Fragen zu FreeBASIC.
Vorheriges Thema anzeigen :: Nächstes Thema anzeigen  
Autor Nachricht
hitori04



Anmeldungsdatum: 21.04.2011
Beiträge: 53

BeitragVerfasst am: 26.01.2012, 17:53    Titel: openb3d kolisions frage Antworten mit Zitat

hi leute, ich melde mich mal wieder mit einer frage, dieses mal zu dem thema openb3d und zwar ist es so dass ich einen ball (sphere) auf den boden(terrain)
"fallen" lassen möchte und dann dass er eben wieder von diesem boden abprallt .. leider fällt mir nicht ein wie dies zu machen ist, könnte mir also einer von euch ein tipp geben ?

danke schon mal im vorraus
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
Westbeam



Anmeldungsdatum: 22.12.2009
Beiträge: 760

BeitragVerfasst am: 26.01.2012, 18:29    Titel: Antworten mit Zitat

Erst prüfst du, ob eine Kollision zustande kommt, ist das der Fall bewegst du den Ball wieder nach oben(via "MoveEntity"). Die Geschwindigkeit, mit der er nach oben springt, muss natürlich langsam abnehmen, also verkleinerst du die Variable, mit der der Ball wieder nach oben springt, in jedem Schleifendurchlauf. zwinkern
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
hitori04



Anmeldungsdatum: 21.04.2011
Beiträge: 53

BeitragVerfasst am: 26.01.2012, 19:00    Titel: Antworten mit Zitat

danke schonmal für die hikfe stellung, du musst allerdings wissen dass ich erst gestern mit openb3d angefangen herum zu experementieren , daher weiß ich jetzt auch nicht mit welchem befehl ich die collision abfrage .. ich weiß zwar dass es entityDistance(cone, terrain) als bsp gibt nur jnicht was ich damit genau machen muss .. ..sorry falls ich mich etwas dumm anstelle .. sind eben meine ersten schritte in sachen dreidimensional
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
Westbeam



Anmeldungsdatum: 22.12.2009
Beiträge: 760

BeitragVerfasst am: 26.01.2012, 19:25    Titel: Antworten mit Zitat

Kein Problem. zwinkern
Am Besten guckst du dir einmal die Befehle auf dieser Seite an:
http://www.blitzforum.de/help/?subcat=67
Das sind alle Befehle, die OpenB3D zur Kollision zur Verfügung stellt. Für dein Vorhaben sollte EntityCollided ausreichen. zwinkern
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
hitori04



Anmeldungsdatum: 21.04.2011
Beiträge: 53

BeitragVerfasst am: 26.01.2012, 19:30    Titel: Antworten mit Zitat

danke, da werd ich mich mal durcharbeiten lächeln
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
hitori04



Anmeldungsdatum: 21.04.2011
Beiträge: 53

BeitragVerfasst am: 26.01.2012, 23:21    Titel: Antworten mit Zitat

also irgendwie werd ich darraus nicht schlau ... mit dem Kopf durch die Mauer wollen
denn entweder verstehe ich nicht was mir der code da aufzeigen soll oder
ich bin nicht in der lage den code in fb umzusetzen ....
ich zeig euch mal meinen code bis jetzt vll hilft das weiter

Code:

#include "F:\Programme\FreeBASIC\openb3d.bi"
#include "fbgfx.bi"
#If __FB_LANG__ = "fb"
Using FB '' Scan code constants are stored in the FB namespace in lang FB
#EndIf
Dim As integer col

Screen 18, 32,, &h02
graphics3d 1024, 768,32,1,1

Var sphere = createsphere()
Var terrain = createterrain(32)
Var light = createlight()
Var cam = createcamera()
Var terimg = ImageCreate(32,32,32)
Var tertex = loadtexture("streetn.bmp")


moveentity sphere, 0,0,5
EntityType sphere, 1
EntityRadius sphere, 1
PositionEntity sphere, 0, 1, 0
entitycolor sphere, 100, 75, 15
entitytexture terrain, tertex
positionentity terrain, -15, -5, 30
entitytype terrain, 2
ambientlight(200,200,200)

Do

   If MultiKey(sc_d) Then moveentity sphere,      .1,0,0
   If MultiKey(sc_a) Then moveentity sphere,      -.1,0,0
   If MultiKey(sc_s) Then moveentity sphere,      0,-.1,0
   If MultiKey(sc_w) Then moveentity sphere,      0,.1,0
   If MultiKey(sc_e) Then moveentity sphere,      0,0,-.1
   If MultiKey(sc_q) Then moveentity sphere,      0,0,.1
   
  If Multikey(SC_RIGHT) Then translateentity cam,   .1,0,0,0
  If Multikey(SC_LEFT)  Then translateentity cam,   -.1,0,0,0
  If MultiKey(SC_c)       Then turnentity cam,         0,-.1,0,0
  If MultiKey(SC_b)     Then turnentity cam,         0,.1,0,0
  If Multikey(SC_DOWN)  Then translateentity cam,   0,0,-.1,0
  If Multikey(SC_UP)    Then translateentity cam,   0,0, .1,0
  If MultiKey(sc_v)       Then turnentity      cam,   .1,0,0,0
  If MultiKey(sc_g)      Then turnentity      cam,   -.1,0,0,0
 

 
  renderworld
  flip
  Sleep 10
Loop Until MultiKey(SC_Escape)
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
Westbeam



Anmeldungsdatum: 22.12.2009
Beiträge: 760

BeitragVerfasst am: 27.01.2012, 16:42    Titel: Antworten mit Zitat

Du prüfst doch gar nicht, ob die Objekte kollidieren?
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
hitori04



Anmeldungsdatum: 21.04.2011
Beiträge: 53

BeitragVerfasst am: 27.01.2012, 17:08    Titel: Antworten mit Zitat

ich hab über die nacht noch ein wenig weiter gemacht ...nun klappt das soweit nur ...halt das vom boden abprallen bekomm ich auf gedeih und verderb nich hin hier mal mein jetziger code:

Code:

#include "F:\Programme\FreeBASIC\openb3d.bi"
#include "fbgfx.bi"
#If __FB_LANG__ = "fb"
Using FB '' Scan code constants are stored in the FB namespace in lang FB
#EndIf
Dim As integer sphere_x = 0, sphere_y = -.1, sphere_z = 0
Dim As Integer terrain_x = -15, terrain_y = -5, terrain_z = 30


Screen 18, 32,, &h02
graphics3d 1024, 768,32,1,1

Var sphere = createsphere()
Var terrain = createterrain(32)
Var light = createlight()
Var cam = createcamera()
Var terimg = ImageCreate(32,32,32)
Var tertex = loadtexture("streetn.bmp")


moveentity sphere, 0,0,5
EntityType sphere, 1
entityradius sphere, 1
PositionEntity sphere, 0, 1, 0
entitycolor sphere, 100, 75, 15
entitytexture terrain, tertex
positionentity terrain, -15, -5, 30
entitytype terrain, 2
ScaleEntity terrain,2,10,2
positionentity cam, 0,0,-10
ambientlight(200,200,200)

Collisions 1,2,2,1

Do

If sphere_x>terrain_x Then
   moveentity sphere, sphere_x, sphere_y-.01, sphere_z
ElseIf countcollisions(sphere) = 1 Then
   moveentity sphere, sphere_x, sphere_y+.01, sphere_z
EndIf


  If Multikey(SC_RIGHT) Then translateentity cam,   .1,0,0,0
  If Multikey(SC_LEFT)  Then translateentity cam,   -.1,0,0,0
  If MultiKey(SC_c)       Then turnentity cam,         0,-.1,0,0
  If MultiKey(SC_b)     Then turnentity cam,         0,.1,0,0
  If Multikey(SC_DOWN)  Then translateentity cam,   0,0,-.1,0
  If Multikey(SC_UP)    Then translateentity cam,   0,0, .1,0
  If MultiKey(sc_v)       Then turnentity      cam,   .1,0,0,0
  If MultiKey(sc_g)      Then turnentity      cam,   -.1,0,0,0

 
  updateworld
  renderworld
  flip
  Sleep 10
Loop Until MultiKey(SC_Escape)
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
Westbeam



Anmeldungsdatum: 22.12.2009
Beiträge: 760

BeitragVerfasst am: 27.01.2012, 17:26    Titel: Antworten mit Zitat

Ungefähr so:
Code:
If EntityCollided() Then
    kollidiert=1
End If

If kollidiert=1 Then
    MoveEntity ball,0,bally/10,0
    bally=bally-(x*x)
End If

Dann sollte der Ball wieder nach oben springen. zwinkern
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
hitori04



Anmeldungsdatum: 21.04.2011
Beiträge: 53

BeitragVerfasst am: 27.01.2012, 17:43    Titel: Antworten mit Zitat

mit dem Kopf durch die Mauer wollen mit dem Kopf durch die Mauer wollen mit dem Kopf durch die Mauer wollen mit dem Kopf durch die Mauer wollen ....selbst wenn ich deinen tipp versuche will es nich klappen ..irgendwas mache ich noch falsch

Code:
#include "F:\Programme\FreeBASIC\openb3d.bi"
#include "fbgfx.bi"
#If __FB_LANG__ = "fb"
Using FB '' Scan code constants are stored in the FB namespace in lang FB
#EndIf
Dim As integer sphere_x = 0, sphere_y = -.1, sphere_z = 0
Dim As Integer terrain_x = -15, terrain_y = -5, terrain_z = 30, kollidiert

Screen 18, 32,, &h02
graphics3d 1024, 768,32,1,1

Var sphere = createsphere()
Var terrain = createterrain(32)
Var light = createlight()
Var cam = createcamera()
Var terimg = ImageCreate(32,32,32)
Var tertex = loadtexture("streetn.bmp")


moveentity sphere, 0,0,5
EntityType sphere, 1
entityradius sphere, 1
PositionEntity sphere, 0, 1, 0
entitycolor sphere, 100, 75, 15
entitytexture terrain, tertex
positionentity terrain, -15, -5, 30
entitytype terrain, 2
ScaleEntity terrain,2,10,2
positionentity cam, 0,0,-10
ambientlight(200,200,200)

Collisions 1,2,2,1

Do
if entitycollided(sphere,1) then
   kollidiert=1
EndIf
if kollidiert = 1 then
   moveentity sphere_x,0,sphere_y/10.0
   sphere_y = sphere_y-(01.*0.01)
EndIf


  If Multikey(SC_RIGHT) Then translateentity cam,   .1,0,0,0
  If Multikey(SC_LEFT)  Then translateentity cam,   -.1,0,0,0
  If MultiKey(SC_c)       Then turnentity cam,         0,-.1,0,0
  If MultiKey(SC_b)     Then turnentity cam,         0,.1,0,0
  If Multikey(SC_DOWN)  Then translateentity cam,   0,0,-.1,0
  If Multikey(SC_UP)    Then translateentity cam,   0,0, .1,0
  If MultiKey(sc_v)       Then turnentity      cam,   .1,0,0,0
  If MultiKey(sc_g)      Then turnentity      cam,   -.1,0,0,0

 
  updateworld
  renderworld
  flip
  Sleep 10
Loop Until MultiKey(SC_Escape)
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
Westbeam



Anmeldungsdatum: 22.12.2009
Beiträge: 760

BeitragVerfasst am: 27.01.2012, 20:02    Titel: Antworten mit Zitat

Die genaue Formel, die du benutzen kannst, weiß ich auch nicht, probier mal die:
Code:
bally=bally-(bally*bally)

Oder so ähnlich. zwinkern
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
MisterD



Anmeldungsdatum: 10.09.2004
Beiträge: 3071
Wohnort: bei Darmstadt

BeitragVerfasst am: 27.01.2012, 20:06    Titel: Antworten mit Zitat

man nehme sich ein blatt papier, einen zirkel und ein geodreieck, mal eine beispielhafte situation einmal auf, leite sich daraus passende formeln her und probiere dann ob die beispielhafte situation im computer zufriedenstellend simuliert wird.

*hust*
_________________
"It is practically impossible to teach good programming to students that have had a prior exposure to BASIC: as potential programmers they are mentally mutilated beyond hope of regeneration."
Edsger W. Dijkstra
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
28398



Anmeldungsdatum: 25.04.2008
Beiträge: 1917

BeitragVerfasst am: 27.01.2012, 22:35    Titel: Antworten mit Zitat

Ämposchible!
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
hitori04



Anmeldungsdatum: 21.04.2011
Beiträge: 53

BeitragVerfasst am: 28.01.2012, 00:55    Titel: Antworten mit Zitat

wie man am code hier jetzt sieht :

Code:

#include "F:\Programme\FreeBASIC\openb3d.bi"
#include "fbgfx.bi"
#If __FB_LANG__ = "fb"
Using FB '' Scan code constants are stored in the FB namespace in lang FB
#EndIf
Dim As integer sphere_x = 0, sphere_y = -.1, sphere_z = 0
Dim As Integer terrain_x = -15, terrain_y = -5, terrain_z = 30, kollidiert

Screen 18, 32,, &h02
graphics3d 1024, 768,32,1,1

Var sphere = createsphere()
Var terrain = createterrain(32)
Var light = createlight()
Var cam = createcamera()
Var terimg = ImageCreate(32,32,32)
Var tertex = loadtexture("streetn.bmp")


moveentity sphere, 0,1,5
EntityType sphere, 1
entityradius sphere, 1
PositionEntity sphere, 0, 1, 0
entitycolor sphere, 100, 75, 15
entitytexture terrain, tertex
positionentity terrain, -15, -5, 30
entitytype terrain, 2
ScaleEntity terrain,2,10,2
entitybox terrain, -3,-3,-3,6,6,6
positionentity cam, 0,0,-10
ambientlight(200,200,200)

Collisions 1,2,2,1

Do
 


If countcollisions(sphere) = 0 Then
   moveentity sphere, sphere_x, sphere_y-.01, sphere_z
ElseIf countcollisions(sphere) = 1  Then
   For kollidiert = sphere_y To
   moveentity sphere, sphere_x, sphere_y+.1, sphere_z
   next
EndIf
  updateworld
  renderworld
  flip
  Sleep 10
Loop Until MultiKey(SC_Escape)



bekomme ich jetzt das hoch unter fligen bzw fallen lassen des balles(sphere) hin nur .. möchte ich dass er mit etwa der gleichen fall geschwindigkeit wieder hochsteigt und nicht so abgehackt hoch und runter hopst .. durchgeknallt
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
Beiträge der letzten Zeit anzeigen:   
Neues Thema eröffnen   Neue Antwort erstellen    Das deutsche QBasic- und FreeBASIC-Forum Foren-Übersicht -> Allgemeine Fragen zu FreeBASIC. Alle Zeiten sind GMT + 1 Stunde
Seite 1 von 1

 
Gehe zu:  
Du kannst keine Beiträge in dieses Forum schreiben.
Du kannst auf Beiträge in diesem Forum nicht antworten.
Du kannst deine Beiträge in diesem Forum nicht bearbeiten.
Du kannst deine Beiträge in diesem Forum nicht löschen.
Du kannst an Umfragen in diesem Forum nicht mitmachen.

 Impressum :: Datenschutz