Java-Gaming.org Hi !
Featured games (83)
games approved by the League of Dukes
Games in Showcase (539)
Games in Android Showcase (132)
games submitted by our members
Games in WIP (603)
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  
  [SOLVED] Collision detection, when hitting head  (Read 811 times)
0 Members and 1 Guest are viewing this topic.
Offline Mads

JGO Ninja


Medals: 26
Projects: 3
Exp: 6 years


One for all!


« Posted 2011-10-31 03:50:37 »

1  
2  
3  
4  
5  
6  
7  
8  
9  
10  
11  
12  
13  
14  
15  
16  
17  
18  
19  
I already have the collisions done, for when the player is falling.
It looks like this:
[code]
/**
    * Check if we hit a brick, when falling
    * @param worldX
    * @param worldY
    * @param step
    * @return
    */

   public double checkBrickTop(double worldX, double worldY, double step) {
      if (isInsideBrick(worldX, worldY)) {
         double shouldBeY = worldY/10 +1 ;
         double diff = shouldBeY - worldY;
         return step - diff;
      } else {
         return step;
      }
   }


1  
2  
3  
4  
5  
6  
7  
8  
9  
10  
11  
12  
13  
14  
15  
16  
17  
18  
19  
20  
if (player.getYVelocity() <= 0) {
            // Falling!
            if (player.getYVelocity() <= -1) {
               player.setYVelocity(-1);
            } else {
               player.setYVelocity(player.getYVelocity() - 0.1);
            }
            // Calculate where the motherf**ker's gonna land
            newY = player.getWorldY() + player.getYVelocity();
            if (level.isInsideBrick(player.getWorldX(), newY - (player.getHeight() + 2))) {
               double yTrans = level.checkBrickTop(player.getWorldX(),
                     player.getWorldY() - player.getHeight(),
                     player.getYVelocity());
               player.setWorldY(player.getWorldY() + yTrans);
               System.out.println(yTrans + " " + player.getYVelocity());
               player.setJumping(false);
            } else {
               player.setWorldY(newY);
            }
         }


However, I've hit a brick wall now. I need to do roughly the same thing, but for when I hit a brick, when jumping.
Current code looks like this, but it doesn't work correctly - player gets teleported high above when brick is hit:
1  
2  
3  
4  
5  
6  
7  
8  
9  
10  
11  
12  
13  
14  
15  
16  
/**
    * Check if we hit a brick, when rising
    * @param worldX
    * @param worldY
    * @param step
    * @return
    */

   public double checkBrickBottom(double worldX, double worldY, double step) {
      if (isInsideBrick(worldX, worldY)) {
         double shouldBeY = worldY/10 +1 ;
         double diff = shouldBeY - worldY;
         return step - diff;
      } else {
         return step;
      }
   }


1  
2  
3  
4  
5  
6  
7  
8  
9  
10  
11  
12  
13  
if (player.getYVelocity() > 0) {
            // Rising into the air!
            player.setYVelocity(player.getYVelocity() - 0.1);
         }
         double newY = player.getWorldY() + player.getYVelocity();
         if (level.isInsideBrick(player.getWorldX(), newY + 1)) {
            double yTrans = level.checkBrickTop(player.getWorldX(),
                  player.getWorldY(),
                  player.getYVelocity());
            player.setWorldY(player.getWorldY() + yTrans);
         } else {
            player.setWorldY(newY);
         }



It's probably something small, I just don't see it.[/code]

Offline theagentd

« JGO Bitwise Duke »


Medals: 365
Projects: 2
Exp: 8 years



« Reply #1 - Posted 2011-10-31 11:26:12 »

Your code is filled with accidental code tags, making it really hard to read it. Try to fix it... xD

You're most likely calculating checkBrickTop() wrongly. Instead of trying to find the error in the position and then subtracting it from the position, why not just snap (=set) the player position to the top of the brick? It should be much less error prone.

Myomyomyo.
Offline Mads

JGO Ninja


Medals: 26
Projects: 3
Exp: 6 years


One for all!


« Reply #2 - Posted 2011-10-31 23:36:41 »

Your code is filled with accidental code tags, making it really hard to read it. Try to fix it... xD

You're most likely calculating checkBrickTop() wrongly. Instead of trying to find the error in the position and then subtracting it from the position, why not just snap (=set) the player position to the top of the brick? It should be much less error prone.

Did that now, thanks Smiley

Games published by our own members! Check 'em out!
Legends of Yore - The Casual Retro Roguelike
Offline aazimon
« Reply #3 - Posted 2011-11-01 19:31:55 »

I believe you problem is in the checkBrickBottom(). You are subtracting the difference, which will put your player higher on the screen. You want your player lower. Try adding the diff value.
Offline Mads

JGO Ninja


Medals: 26
Projects: 3
Exp: 6 years


One for all!


« Reply #4 - Posted 2011-11-02 03:15:53 »

I just changed it to calculate the players location on top of the brick, and set it to that location  Roll Eyes
Thanks for the reply though,that was probably my 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.

rwatson462 (30 views)
2014-12-15 09:26:44

Mr.CodeIt (23 views)
2014-12-14 19:50:38

BurntPizza (50 views)
2014-12-09 22:41:13

BurntPizza (84 views)
2014-12-08 04:46:31

JscottyBieshaar (45 views)
2014-12-05 12:39:02

SHC (59 views)
2014-12-03 16:27:13

CopyableCougar4 (57 views)
2014-11-29 21:32:03

toopeicgaming1999 (123 views)
2014-11-26 15:22:04

toopeicgaming1999 (114 views)
2014-11-26 15:20:36

toopeicgaming1999 (32 views)
2014-11-26 15:20:08
Resources for WIP games
by kpars
2014-12-18 10:26:14

Understanding relations between setOrigin, setScale and setPosition in libGdx
by mbabuskov
2014-10-09 22:35:00

Definite guide to supporting multiple device resolutions on Android (2014)
by mbabuskov
2014-10-02 22:36:02

List of Learning Resources
by Longor1996
2014-08-16 10:40:00

List of Learning Resources
by SilverTiger
2014-08-05 19:33:27

Resources for WIP games
by CogWheelz
2014-08-01 16:20:17

Resources for WIP games
by CogWheelz
2014-08-01 16:19:50

List of Learning Resources
by SilverTiger
2014-07-31 16:29:50
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!