Java-Gaming.org    
Featured games (91)
games approved by the League of Dukes
Games in Showcase (578)
games submitted by our members
Games in WIP (499)
games currently in development
News: Read the Java Gaming Resources, or peek at the official Java tutorials
 
    Home     Help   Search   Login   Register   
Pages: [1]
  ignore  |  Print  
  How to 2D AABB  (Read 1062 times)
0 Members and 1 Guest are viewing this topic.
Offline Mads

JGO Ninja


Medals: 24
Projects: 3


One for all!


« Posted 2011-11-24 03:13:05 »

Hello guys!

I want to discuss the best implementation of collision-handling in a sideviewed platformer.  Let us keep on topic of
AABB collisions.

Regarding handling the last step before hitting something..
..you can either calculate where to put the player, or you can calculate how big of a step is needed.
Either way, you end up with pretty much the same result.

Which of the two would you guys prefer? I'm not talking about ease of implementation, but of how well the code solves the problem. I recently implemented the first one, and it doesn't feel good, even though it behaves the same.

Regarding the procedure of updating..
..What I've been doing so far, is to have different, but similar in many ways, methods for each of the different collisions:
  • Right side of character, when walking/jumping right
  • Left side of character, when walking/jumping left
  • Top border of character, when jumping and hitting something in air
  • Bottom border of character, when falling down and hitting the floor

I would have a fallUpdate(), jumpUpdate(), and walkUpdate(direction). The last one can be split into two - it's just two if-statements judging wether the character is running right or left.


However, looking at Metagun for instance, it seems that the same one method can be used to calculate the steps, for both directions and when jumping.
That one method is also shorter than my three together.

Is there something about this? What would be the best way to handle all four collisions?

Regarding what positions to check..
How does one determine this? I would just check the four corners of a character, but when the character get's higher than a block, you can jump up and get stuck within them. That's possible, because you would only be checking the two corners, which aren't colliding at all. This makes for some pretty weird bugs, and now you're unable to have thin shapes.

I don't believe this is the best way to handle this. What do you think? Do you know of any other ways to solve this problem?

Pages: [1]
  ignore  |  Print  
 
 
You cannot reply to this message, because it is very, very old.

 

Add your game by posting it in the WIP section,
or publish it in Showcase.

The first screenshot will be displayed as a thumbnail.

xsi3rr4x (27 views)
2014-04-15 18:08:23

BurntPizza (24 views)
2014-04-15 03:46:01

UprightPath (39 views)
2014-04-14 17:39:50

UprightPath (21 views)
2014-04-14 17:35:47

Porlus (37 views)
2014-04-14 15:48:38

tom_mai78101 (61 views)
2014-04-10 04:04:31

BurntPizza (120 views)
2014-04-08 23:06:04

tom_mai78101 (220 views)
2014-04-05 13:34:39

trollwarrior1 (187 views)
2014-04-04 12:06:45

CJLetsGame (194 views)
2014-04-01 02:16:10
List of Learning Resources
by SHC
2014-04-18 03:17:39

List of Learning Resources
by Longarmx
2014-04-08 03:14:44

Good Examples
by matheus23
2014-04-05 13:51:37

Good Examples
by Grunnt
2014-04-03 15:48:46

Good Examples
by Grunnt
2014-04-03 15:48:37

Good Examples
by matheus23
2014-04-01 18:40:51

Good Examples
by matheus23
2014-04-01 18:40:34

Anonymous/Local/Inner class gotchas
by Roquen
2014-03-11 15:22:30
java-gaming.org is not responsible for the content posted by its members, including references to external websites, and other references that may or may not have a relation with our primarily gaming and game production oriented community. inquiries and complaints can be sent via email to the info‑account of the company managing the website of java‑gaming.org
Powered by MySQL Powered by PHP Powered by SMF 1.1.18 | SMF © 2013, Simple Machines | Managed by Enhanced Four Valid XHTML 1.0! Valid CSS!