bodencollisionsberechnung

Übersicht BlitzBasic Blitz3D

Neue Antwort erstellen

 

Peak7810

Betreff: bodencollisionsberechnung

BeitragFr, Jul 18, 2008 3:27
Antworten mit Zitat
Benutzer-Profile anzeigen
wie kann man eine bodenkollision und die darauf folgende reaktion von hand berechnen.

also wenn man beispielsweise das ergebnis einer spieler level kollision hat, also true, was dann passieren soll.

theoretisch wird bei bodenkollision ja einfach der y wert der position minimal angehoben, ansonsten aufgrund schwerkraft immer gesenkt.

gleichzeitig soll aber eine sprungroutine möglich sein.

also

if player_bodencollision true then y+1
else
y-1

so in der art, nur das eben auch noch ein sprung möglich ist, was nicht so einfach ist, da man ja die schwerkraft beachten muss, was ja der fallgeschwindigkeit entspricht und im schlimmsten fall aufgrund der kollision zu einem ruckeln führen könnte.

hab mir das jetzt mal nur so theoretisch überlegt, gibts da eine manuelle möglichkeit?
also ohne den stop parameter nutzen zu müssen.

Silver_Knee

BeitragFr, Jul 18, 2008 10:24
Antworten mit Zitat
Benutzer-Profile anzeigen
Code: [AUSKLAPPEN]
player_y=player_y-fallgeschw
fallgeschw=fallgeschw+1

if bodenkollision
  player_y=Boden_y
endif

Hier Einzeichnen



Auf diese Weise kann es nicht ruckeln, da der player beim einzeichnen einfach nur die boden_y als player_y bekommt. Schwerkraft kannst du durch eine sich ständig erhöhende fallgeschwindigkeit simulieren

Zum hüpfen:

Code: [AUSKLAPPEN]
player_y=player_y-fallgeschw
fallgeschw=fallgeschw+1

if bodenkollision
  player_y=Boden_y
  if huepfen
    fallgeschw=-5
  endif
endif

Hier Einzeichnen


Wenn man auf dem boden steht und huepfen ausgelöst wird... zb durch einen tasten druck, wird die Fallgeschwindigkeit negativ also geht in die andere richtung.
 

Peak7810

BeitragFr, Jul 18, 2008 11:40
Antworten mit Zitat
Benutzer-Profile anzeigen
woher soll man aber bei verschiedenen objekten im level die boden_y haben.
wie soll man dies herausfinden.

stell dir vor ich hüpfe von box zu box, da ist boden_y ja was anderes als der rand der box.

Kannst du mal schauen?
hatte es bisher so gelöst.

Code: [AUSKLAPPEN]
           IF Kollision mit Boden
               updown = 0.01
               Kollision = 0  (also auf null setzen)
             IF KEY(57) THEN updown=0.5
            ELSE
               updown=updown-0.02

            ENDIF


funktioniert, ruckelt aber eben ein wenig.

was müsste ich daran ändern?

achja und zum bewegen auf der y achse wird dann updown verwendet.


[bzw] wie wird der stop und sliding parameter den intern eigentlich gehandhabt.vorallem stop würde mich interessieren.
 

Peak7810

BeitragSo, Jul 20, 2008 19:40
Antworten mit Zitat
Benutzer-Profile anzeigen
keiner noch eine idee?
 

Grasmann

BeitragSo, Jul 20, 2008 20:58
Antworten mit Zitat
Benutzer-Profile anzeigen
nimm die y koordinaten direkt vom, mit dem player kollidierten, objekt

ungefähr so:

Code: [AUSKLAPPEN]
EntityY(CollisionEntity(Player,1*))


ich denk das müsste gehen
*1 oder 0 ... weis nimmer genau

Neue Antwort erstellen


Übersicht BlitzBasic Blitz3D

Gehe zu:

Powered by phpBB © 2001 - 2006, phpBB Group