The GetMapImpactX function returns the X position after a collision has been detected from the CheckMapImpact command.
FACTS:
* None
Mini Tutorial:
This example builds map, and level. The primary focus of this example is the detection of collisions of moving region and the level.
; Create a map with provision for 5 levels MyMap=NewMap(5) ; Create some blank blocks for this map CreateMapGFX MyMap,25,25,2,RGB(0,0,0) BoxC 0,0,30,30,1,RGB(255,0,200) GetMapBlk MyMap,1,0,0 ; create the level MyLevel=NewLevel(Mymap,25,20) w=GetLevelWidth(MyMap,MyLevel) h=GetLevelHeight(MyMap,MyLevel) ; Fill the Level edges with blocks For Xlp=0 To GetLevelWidth(MyMap,mylevel) PokeLevelTile Mymap,MyLevel,xlp,0,1 PokeLevelTile Mymap,MyLevel,xlp,h,1 Next For Ylp=0 To GetLevelHeight(MyMap,mylevel) PokeLevelTile Mymap,MyLevel,0,ylp,1 PokeLevelTile Mymap,MyLevel,w,ylp,1 Next ; Draw a strip of blocks across the middle ; of the page For Xlp=3 To GetLevelWidth(MyMap,mylevel)-3 PokeLevelTile Mymap,MyLevel,xlp,h/2,1 Next ; Define some variables for a PLayer PlayerX=50 PlayerY=50 PlayerWidth =20 PlayerHeight =20 Speed=4 ; Start a Do / Loop Do ; Clear the screen Cls RGB(0,0,0) ; Draw the map to the screen DrawMap MyMap,MyLevel,0,0 ; Store the players possible new position PlayerNewX=PlayerX PlayerNewY=PlayerY ; Handle the players Movement If UpKey() Then PlayerNewY=PLayerY-Speed If DownKey() Then PlayerNewY=PLayerY+Speed If LeftKey() Then PlayerNewX=PLayerX-Speed If RightKey() Then PlayerNewX=PLayerX+Speed ; ========================== ; Handle Collision ; =========================== If CheckMapImpact(MyMap,MyLevel,PlayerX,playerY,PlayerNewX,PlayerNewY,PLayerWidth,PlayerHeight) ; If there was impact with the map, then read our ; new position back. PlayerX=GetMapImpactX() PlayerY=GetMapImpactY() ; Check what side the impact occured upon ; and display a message If GetMapImpactLeft() Print "Impact occured on the LEFT side" EndIf If GetMapImpactRight() Print "Impact occured on the RIGHT side" EndIf If GetMapImpactTop() Print "Impact occured on the TOP side" EndIf If GetMapImpactBot() Print "Impact occured on the Bottom side" EndIf Else ; No Collision, Then set the current players ; position to it's new position PlayerX=PlayerNewX PlayerY=PlayerNewY EndIf ; draw the player (box) to the screen X2=playerX+PlayerWidth Y2=playerY+PlayerHeight Box playerX,playerY,x2,y2,1 ; Display the screen Sync ; Loop back to the do statement Loop |
This example would output.
|