home *** CD-ROM | disk | FTP | other *** search
- rem Collision Functionality
-
- sync on : sync rate 0 : hide mouse : color backdrop rgb(100,100,255)
- set text transparent : set text font "Arial" : set text size 20
-
- rem load sounds
- load sound "impact.wav",1
- for s=2 to 10 : clone sound s,1 : next s
-
- rem load images
- load image "marble.bmp",1
- load image "moss.bmp",2
- load image "fur.bmp",3
-
- rem create floor
- make object box 1,400,10,400 : position object 1,0,-5,0
- texture object 1,2 : scale object texture 1,2,2
-
- rem create walls
- make object box 2,400,100,10 : position object 2,0,50,-200
- make object box 3,400,100,10 : position object 3,0,50, 200
- make object box 4,10,100,400 : position object 4,-200,50,0
- make object box 5,10,100,400 : position object 5, 200,50,0
- for t=2 to 5
- texture object t,2 : scale object texture t,4,1
- next t
-
- rem Set floor and walls to box collision for rectangle roamer
- make object collision box 1,-200,-5,-200,200,5,200,0
- make object collision box 2,-200,-50,-5,200,50,5,0
- make object collision box 3,-200,-50,-5,200,50,5,0
- make object collision box 4,-5,-50,-200,5,50,200,0
- make object collision box 5,-5,-50,-200,5,50,200,0
-
- rem create collision platform
- make object box 6,100,12,100
- position object 6,0,5,0
- texture object 6,1
-
- rem create bouncey ball and set bounce-vars
- make object sphere 11,25
- set object collision to spheres 11
- set object radius 11,15
- texture object 11,1
- y#=75 : iy#=2
-
- rem rectangle roamer for box collision
- make object box 41,40,20,40 : position object 41,95,31,50
- make object collision box 41,-20,-10,-20,20,10,20,0
- texture object 41,1
- set shadow shading on 41
-
- rem load a model in center of world
- load object "alien.x",51
- set object collision to polygons 51
- scale object 51,1500,1500,1500
- position object 51,0,40,0
- xrotate object 51,180
- texture object 51,3
- scale object texture 51,5,5
- set object speed 51,100
- loop object 51
-
- rem create a crate for automatic collision
- make object cube 61,15
- automatic object collision 61,8.0,0
- set object collision to spheres 61
- position object 61,-75,30,75
- texture object 61,1
- set shadow shading on 61
-
- rem setup camera and lights
- set point light 0,0,0,0
- make light 1 : set point light 1,0,0,0 : color light 1,255,-100,-100
- position camera 0,30,-100
-
- rem set automatic collision for camera
- automatic camera collision 0,30,0
- set global collision on
-
- rem loop
- do
-
- rem delete all collision data
- if spacekey()=1
- gosub _delete_collision
- endif
-
- rem move crate to test automatic object collision
- yrotate object 61,wrapvalue(object angle y(61)-0.2)
- move object down 61,0.5
- move object 61,0.5
-
- rem control camera
- control camera using arrowkeys 0,1,2
-
- rem control bouncey ball
- y#=y#+(iy#/20.0) : iy#=iy#-0.2
- position object 11,object position x(11),y#,object position z(11)
- if object collision(11,0)>0 then iy#=iy#*-1.0 : play sound 1+rnd(9)
-
- rem display types of collision
- if object in screen(11)=1 then center text object screen x(11),object screen y(11)-25,"Polygon Collision"
- if object in screen(41)=1 then center text object screen x(41),object screen y(41)-25,"Sliding Box Collision"
- if object in screen(61)=1 then center text object screen x(61),object screen y(61)-25,"Automated Collision"
-
- rem Add gravity to camera to test automatic collision
- position camera camera position x(),camera position y()-0.01,camera position z()
-
- rem rectangle roamer
- move object 41,0.3
- ballhit=object collision(41,0)
- `if ballhit>=21 and ballhit<=30
- ` yrotate object ballhit,wrapvalue(object angle y(41))
- ` move object up ballhit,5.0
- ` move object ballhit,0.6
- `endif
- set cursor 0,0
- print ballhit
- if ballhit>0
- spin#=rnd(45)
- ax#=object position x(41)-get object collision x()
- ay#=object position y(41)-get object collision y()
- az#=object position z(41)-get object collision z()
- position object 41,ax#,ay#,az#
- endif
- if spin#>0
- spin#=spin#-1.0
- yrotate object 41,wrapvalue(object angle y(41)+1)
- endif
-
- rem move default light with ball
- position light 0,object position x(11),object position y(11),object position z(11)
-
- rem move coloured light with roamer
- position light 1,object position x(41),object position y(41)+25,object position z(41)
-
- rem update screen
- sync
-
- rem end loop
- loop
-
- _delete_collision:
- for o=1 to 5
- delete object collision box o
- next o
- set global collision off
- return
-
-