#1 GDNet+ - Reputation: 518
Posted 02 December 2012 - 05:08 PM
[code}
void brick_collision()
{
if(x>3.0f && x<5.0f)
{
brick=3.0f;
bricks[3][5]=false;
}
else if(x>1.0f && x<3.0f)
{
brick=1.0f;
bricks[3][4]=false;
}
else if(x>-1.0f && x<1.0f)
{
brick=-1.0f;
bricks[3][3]=false;
}
else if(x>-3.0f && x<-1.0f)
{
brick=-3.0f;
bricks[3][2]=false;
}
else if(x>-5.0f && x<-3.0f)
{
brick=-5.0f;
bricks[3][1]=false;
}
SPRITE object3;
SPRITE object4;
object3.x=x;
object3.y=y;
object3.width=0.1f;
object3.height=0.1f;
object4.x=brick;
object4.y=3.5f;
object4.width=2.0f;
object4.height=1.0f;
if(Sprite_Collide(&object3,&object4)==1)
{
xstep=-xstep;
ystep=-ystep;
}
}
[/code]
#2 Members - Reputation: 611
Posted 03 December 2012 - 02:55 AM
//X = starting position X
//Y = starting position Y
//W = Width of the rectangle
//H = Height of the rectangle
rec1;//x y w h
rec2;//x y w h
//The way we gonna check collision is
//From left
//From right
//From top
//From bottom
if(rec1.x + rec1.w > rec2.x &&
rec1.x < rec2.x + rec2.w &&
rec1.y + rec1.h > rec2.y &&
rec1.y < rec2.y + rec2.w )
EDIT::
I have noticed there is a tag for OpenGL? your checking collision in 3D?
Edited by BaneTrapper, 03 December 2012 - 03:34 AM.
Current projects:
The Wanderer, 2d turn based rpg style game
www.gamedev.net/topic/641117-check-up-the-wanderer/
#4 Members - Reputation: 1564
Posted 03 December 2012 - 07:20 PM
Edit: Okay, I can see you tried, so I'll help you out some.
- Hit edit on your first post there.
- Delete all the code.
- Copy the code (with formatting) from the original file.
- In the edit window, place the keyboard cursor where the code you deleted used to be.
- At the top of the edit window there are two rows of buttons. Press the red button at the end of the second row:

- Select your language from the drop-down list.
- Past your code into the open space.
- Click 'OK'.
- Click 'Save Changes'.
Typically I use something like the following for rect vs rect:
[source lang="cpp"]//using Microsoft RECT (left, top, right, bottom)bool rectCollideTest(RECT& thisRect, RECT& thatRect) { if(thisRect.left > thatRect.right) {return false;} if(thisRect.right < thatRect.left) {return false;} if(thisRect.top > thatRect.bottom) {return false;} if(thisRect.bottom < thatRect.top) {return false;} return true;}[/source]
This can also be accelerated slightly if you know which exclusion is most likely and move it to the top. That's not something to worry about unless you're doing more collisions than you should though.
Edited by Khatharr, 03 December 2012 - 07:46 PM.
There are ten kinds of people in this world: those who understand binary and those who don't.
#8 Members - Reputation: 1564
Posted 03 December 2012 - 08:32 PM
There are ten kinds of people in this world: those who understand binary and those who don't.
#9 GDNet+ - Reputation: 518
Posted 03 December 2012 - 08:36 PM
#11 Members - Reputation: 1564
Posted 03 December 2012 - 09:02 PM
Looking over what you posted, I still don't know what's representing a brick in your code.
Looking at your first post it seems like you're just using sprites and treating them like objects. If you want bricks that do things then you should make a class for bricks that encapsulates their behavior.
Separate your drawing from your logic: Do the logic for the frame and then draw the result.
Edited by Khatharr, 03 December 2012 - 09:02 PM.
There are ten kinds of people in this world: those who understand binary and those who don't.
#15 Members - Reputation: 1564
Posted 03 December 2012 - 10:39 PM
There are ten kinds of people in this world: those who understand binary and those who don't.






