Can anyone please tell if you are able to allow collisions within a function, i don't know how.
I have the game levels as seperate functions in order to make the code more readable and easier to navigate through, but my collision routines just don't seem to be working. :-(
Thanks for any help
IcE
Collisions routines? Collisions in functions? Once collisions are set up blitz handles everything internaly. What are yopu trying to do/what are you doing now? A code example would be very helpful, thanks.
Heres the code. It's not quite in functions at the moment but for some reason, the collision routines not working even though it isn't in a function. Can you tell me where i'm going wrong please?
The code:
;-------------------
;Graphics setup
;-------------------
SetBuffer BackBuffer()
Graphics3D 800,600
;---------
;Variables
;---------
Global player_speed#=10
Global stage=0
Global thickness=0.9
location$="blues room"
Global cam=CreateCamera()
CameraRange cam,1,10000
;---------
;Collision
;---------
pl=1
ro=2
;-----------------
;Initialise player
;-----------------
player_texture=LoadTexture("gfx/textures/blue_tex.bmp")
lightmap=LoadTexture("gfx/textures/lightmap.bmp",64)
Global player=LoadAnimMesh("gfx/models/blue.3ds")
Global player_cell=LoadAnimMesh("gfx/models/blue.3ds",player)
head=FindChild(player,"head")
EntityTexture head,player_texture
body=FindChild(player,"body")
EntityTexture body,player_texture
left_arm=FindChild(player,"larm")
EntityTexture left_arm,player_texture
right_arm=FindChild(player,"rarm")
EntityTexture right_arm,player_texture
left_foot=FindChild(player,"lfoot")
EntityTexture left_foot,player_texture
right_foot=FindChild(player,"rfoot")
EntityTexture right_foot,player_texture
cellshade(player_cell)
EntityTexture player,lightmap
EntityType player,pl,True
ScaleEntity player,.3,.3,.3
EntityRadius player,23
;blues_room()
;---------
;Variables
;---------
exists=1
;--------------
;Loading screen
;--------------
load_screen=LoadImage("gfx/loading.bmp")
DrawImage load_screen,0,0
Flip
;------------------
;Initialise objects
;------------------
blue_room=LoadAnimMesh("gfx/models/blue_room.3ds")
blue_room_cell=LoadAnimMesh("gfx/models/blue_room.3ds",blue_room)
cellshade(blue_room_cell)
EntityType blue_room,ro,True
cam_position=FindChild(blue_room,"campos")
point=FindChild(blue_room,"bluestart")
AmbientLight 255,255,255
;----------------
;Position objects
;----------------
PositionEntity blue_room,0,0,0
EntityParent cam,cam_position,False
;----------
;Collisions
;----------
Collisions pl,ro,2,3
;----
;Loop
;----
While exists=1
PointEntity cam,player
player_control()
If KeyDown(1) Then exists=0
RenderWorld
Flip
Wend
FreeImage load_screen
FreeEntity blue_room
End
Thanks for your kind help :-)
IcE
Any help would be really appriciated. Please if anyone can tell me where i'm going wrong, i can't really progress any further until I have got it sorted out.
Thankyou
:-)
IcE
Uh-hum!, you see, you checked for collisions before your loop even began. The correct method is to check for collisions each loop. Soooo...
Change this:
;----------
;Collisions
;----------
Collisions pl,ro,2,3
;----
;Loop
;----
While exists=1
PointEntity cam,player
player_control()
If KeyDown(1) Then exists=0
RenderWorld
Flip
Wend
FreeImage load_screen
FreeEntity blue_room
End
to something along this line:
;----
;Loop
;----
While exists=1
PointEntity cam,player
player_control()
If KeyDown(1) Then exists=0
;----------
;Collisions
;----------
Collisions pl,ro,2,3
UpdateWorld
RenderWorld
Flip
;CountCollisions
;ClearCollisions
Wend
FreeImage load_screen
FreeEntity blue_room
End
(I believe you have to call collisions before updateworld (I'm at work right now and my memory stinks) and then countcollisions or clearcollisions if necessary)
Thanks WolRon, i'll give it a try and see how it goes.
I really appriciate your help.
:-)
Hmmm, no joy :-(. Ah well, thanks for the help all the same :-)
If there are any more solutions to this please keep me updated.
Many thanks
:-)
Wait!!! i got it. Thankyou ever so much!!!!
It was only the "Updateworld" command i was missing ;-).
Thankyou for reminding about it,lol.
Thanks again
:-)