Problem mit Kollision und Schwerkraft
Übersicht

![]() |
HolzchopfMeisterpacker |
![]() Antworten mit Zitat ![]() |
---|---|---|
Hallo Pac-Man
darf ich dich bitten, in Zukunft nicht mehr ganze Beiträge zu zitieren (besonders, wenn es gerade der vorangehende ist)? Danke für deine Aufmerksamkeit und einen schönen vierten Advent wünsch ich noch! =) mfG Holzchopf |
||
Erledige alles Schritt um Schritt - erledige alles. - Holzchopf
CC BY ♫ BinaryBorn - Yogurt ♫ (31.10.2018) Im Kopf da knackt's und knistert's sturm - 's ist kein Gedanke, nur ein Wurm |
PacMani |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Hab sie nun rausgenommen ![]() |
||
Kruemelator |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Es nicht viel komplizierter das Level in "steil" und "flach" zu unterteilen. Dann hast du für einen Hügel zwar zwei Objekte, aber außer sie auf der selben Stellle zu platzieren musst du da nix beachten.
Hier mal ein Beispiel wie ich es gelöst hätte: Beachte was in der Hauptschleife unter Schwerkraft steht, ist wesendlich kürzer als bei dir. Code: [AUSKLAPPEN] ;Variablen--------------------------------
Global xfenster = 800 Global yfenster = 600 Global farbtiefe = 16 Global windowmod = 2 Global mxs# Global mys# Global mzs# ;3D Welt---------------------------------- Graphics3D xfenster,yfenster,farbtiefe,windowmod SetBuffer BackBuffer() WireFrame 0 ClsColor 255,255,255 Color 0,0,0 ;Kamera und Licht Global camera=CreateCamera() CameraRange camera,0.001,100 CameraClsColor camera,255,255,255 PositionEntity camera,0,-5,-15 light = CreateLight() ;Objekte---------------------------------- Const spielfigur = 1 Const landschaftsteil = 2 Const landschaftflach = 3 ;Spielfigur spieler = CreateSphere() EntityColor spieler,150,0,0 EntityType spieler,spielfigur PositionEntity spieler,0,5,0 ;Levelteil der steil ist level1 = CreateCube() EntityColor level1,0,150,0 ScaleEntity level1,3,1,1 PositionEntity level1,0,-4,0 RotateEntity level1,0,0,60 EntityType level1,landschaftsteil ;Levelteil der flach ist level2 = CreateCube() EntityColor level2,0,150,0 ScaleEntity level2,3,1,1 PositionEntity level2,0,-4,0 RotateEntity level2,0,0,20 PositionEntity level2,-2,-6,0 EntityType level2,landschaftflach ;unterschiedliche Kolisions der Levelteile Collisions(spielfigur,landschaftsteil,2,2) Collisions(spielfigur,landschaftflach,2,3) ;Werte------------------------------------ ;Schwerkraftswert: je höher desto stärker Global gravity# = 0.001 ;Ende------------------------------------- Color 255,255,255 Print "Taste drücken" Color 0,0,0 WaitKey() fpsrate = CreateTimer(60) While Not KeyHit(1) WaitTimer(fpsrate) Cls mxs# = MouseXSpeed() mys# = MouseYSpeed() mzs# = MouseZSpeed() ;Schwerkraft ymove# = ymove# - gravity# TranslateEntity spieler,0,ymove#,0 UpdateWorld If EntityCollided(spieler,landschaftflach) Then ymove# = 0 cammove() RenderWorld Text 10,10,"Mit Leertaste Spieler wieder zurücksetzen" Text 10,20,"Mit ESC beenden" ;Spieler zurücksetzen If KeyHit(57) Then PositionEntity spieler,0,5,0 ymove# = 0 EndIf Flip 0 Wend End ;Funktionen------------------------------- Function cammove() TurnEntity camera,mys#/20,mxs#/-20,0 RotateEntity camera,EntityPitch(camera),EntityYaw(camera),0 MoveMouse 400,300 If KeyDown(17) Then MoveEntity camera,0,0,0.1 If KeyDown(31) Then MoveEntity camera,0,0,-0.1 If KeyDown(30) Then MoveEntity camera,-0.1,0,0 If KeyDown(32) Then MoveEntity camera,0.1,0,0 TranslateEntity camera,0,mzs#/2,0 End Function Schau es dir mal an, vielleicht hilft es dir. |
||
PacMani |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Danke, werde ich bestimmt nochmal zu rate ziehen, wenn holzchopfs Lösung nicht dauerhaft praktisch anzuwenden ist: Wir haben im Chat folgendes herausgearbeitet:
Code: [AUSKLAPPEN] If CountCollisions(Player) > 0
If CollisionNY(Player, 1) < 0.70 ClearCollisions Collisions PlayerCollisions, LevelCollisions, ToPolygon, SlidingFull Else Gravity# = 0 ClearCollisions Collisions PlayerCollisions, LevelCollisions, ToPolygon, SlidingPrevent EndIf End If |
||
Übersicht


Powered by phpBB © 2001 - 2006, phpBB Group