Alternative Collision

BlitzPlus Forums/BlitzPlus Programming/Alternative Collision

En929(Posted 2011) [#1]
I'm think there is an alternative way to do collisions. For collisions, I usually use the "If ImagesCollide" or "If ImageRectCollide" commands, but I think that there's another way to do collisions that involves some type of mathematical formula (I saw it in the "Programming for Teens" book but I don't remember it - and I don't have the book).

But, I would like practice at one like that one so that if I decide to learn another programming language I'll know how to do it in that language too. Thus, can someone tell me what it is? Thanks.


Moore(Posted 2011) [#2]
You could calculate the distance between objects and if that is less then their combined collision radius then you would have a collision.




Matty(Posted 2011) [#3]
I've answered your post in the blitz3d forums.

Do you really need to post the same question in multiple sections of the blitz forums - it puts me off (and perhaps others) answering when they go to the effort of answering in one thread only to find that you've asked it elsewhere as well...


En929(Posted 2011) [#4]
I'm sorry Matty. Sometimes the 3d forums tends to be more active. Thus, it is why I posted my question there too (I probably should have simply posted a link to this page when I posted the question in the 3d forum so they can simply answer my question here (or so). I got your response there. Thanks.

Also, thanks Moore. I'll try that. When I get it, I may be using that collision method from now on.

Last edited 2011


En929(Posted 2011) [#5]
Moore, I'm interested in the code you wrote. Can you write that into my game program below and make it so that the "PLAYER" character can collide with the "DOOR." I tried to use the code that you wrote, but I failed. Thus, I'd like to see an example of it being used in what I wrote below so I can use it from then on. Thanks.



Graphics 1640, 1000 


PLAYER = LoadImage ("Ball.png")
DOOR = LoadImage ("Door.png")



Type PLAYER 
	Field x,y
End Type

Type DOOR	
	Field x,y
End Type




p.PLAYER = New PLAYER
p\x = 500
p\y = 250

d.DOOR = New DOOR
d\x = 500
d\y = 250



While Not KeyDown(1)

   Cls 


;-------------------------Alternative Collision code-----------------------
; would like  to see the alternative collision code being used
;here with the two characters loaded above (e.g. the PLAYER 
;and DOOR characters) so that I can follow how they're used. Thanks.






											







;-------------------------------------------------------------------------------------------




   If KeyDown(208)
      p\y = p\y + 3
   EndIf 


   If KeyDown(200)
      p\y = p\y - 3
    EndIf 


   If KeyDown(205)
      p\x = p\x + 3
   EndIf 


   If KeyDown(203)
      p\x = p\x - 3
   EndIf 


DrawImage (DOOR,d\x,d\y)
DrawImage (PLAYER,p\x,p\y)

	

   Flip

Wend



Last edited 2011

Last edited 2011