Welcome, Guest. Please login or register. Did you miss your activation email?

Show Posts

This section allows you to view all posts made by this member. Note that you can only see posts made in areas you currently have access to.


Messages - Maetis

Pages: [1]
1
Graphics / TransformToGlobal and Rect::Intersects
« on: March 29, 2011, 07:27:14 pm »
Thanks for a quick reply!

I changed
Code: [Select]
B.x = sprite_.GetSize().x;
B.y = sprite_.GetSize().y;

to
Code: [Select]
B.x = sprite_.GetSubRect().GetWidth().x;
B.y = sprite_.GetSubRect().GetHeight().y;


and now the left and upper borders do work, but the right and bottom borders still don't work. I'm guessing there's something wrong with the part with Intersects(), since hit detection isn't working either and I've done that basically the same way.

I remember seeing somewhere something about the center of the sprite related to TransfromToGlobal, but I'm not sure.


EDIT:
I checked that when going diagonally towards upper boundry, the Rect-hitbox has these values when the corner of the hitbox has passed the edge: 210.823, -1.96116, 184.11, 123.352. That seems to me that it should intersect with rectUp (0, -5, 800, 0), but it doesn't. What's going on?

EDIT2:
I noticed that if the Rect is not straight as in /_/ , then Intersect will not work, but if it has not turned very much, then it does work.

2
Graphics / TransformToGlobal and Rect::Intersects
« on: March 29, 2011, 06:46:59 pm »
Hi!
I'm having a hard time figuring out this...

I have a class for world boundries:
Code: [Select]


// RUUTU_W = 800
// RUUTU_H = 450

MaailmanRajat::MaailmanRajat():
rectUp_(0, -5, RUUTU_W, 0), rectDown_(0, RUUTU_H, RUUTU_W, RUUTU_H+5), rectLeft_(-5, 0, 0, RUUTU_H),
rectRight_(RUUTU_W, 0, RUUTU_W+5, RUUTU_H)
{

}

bool MaailmanRajat::TormasiSeinaan(sf::FloatRect hitbox)
{
        if (hitbox.Intersects(rectUp_))
        {
        return true;
        }
       
if (hitbox.Intersects(rectDown_))
        {
        return true;
        }
       
        if (hitbox.Intersects(rectLeft_))
        {
        return true;
        }
       
        if (hitbox.Intersects(rectRight_))
        {
        return true;
        }
       
       
        return false;
}


And I have a Player class where I'm checking if the player is out of world boundries (this should be changed to "the player will not be able to move outside boundries, but that's not the issue right now").

Code: [Select]

// Can the player move?
bool Pelaaja::pystyykoLiikkumaan(FKoordinaatti paamaara, sf::RenderWindow& App)
{
sf::Vector2f A;
sf::Vector2f B;

A.x = 0;
A.y = 0;
B.x = sprite_.GetSize().x;
B.y = sprite_.GetSize().y;

A = sprite_.TransformToGlobal(A);
B = sprite_.TransformToGlobal(B);

sf::FloatRect rect(A.x, A.y, B.x, B.y);

        // MaailmanRajat* rajat_;
return !(rajat_->TormasiSeinaan(rect));
}


Player class also has this at its constructor:
Code: [Select]
sprite_.SetCenter( (kuva_.GetWidth()/2), (kuva_.GetHeight()/2) );

But this doesn't work. Only the upper border works in some way but still in seemingly random way.

Pages: [1]