SFML move()

Hi everyone I'me new with SFML and have a ploblem with the function called move()  :-\

I've set the class and function in it is

void Collider::Move(float dx, float dy)
{
   body.move(dx, dy);
}

in this class (Collider), it has boolean called CheckCollision

bool Collider::CheckCollision(Collider & other,float push)
{
   sf::Vector2f otherPosition = other.GetPosition();
   sf::Vector2f otherHalfsize = other.GetHalfsize();
   sf::Vector2f thisPosition = GetPosition();
   sf::Vector2f thisHalfsize = GetHalfsize();

   float DeltaX = otherPosition.x - thisPosition.x;
   float DeltaY = otherPosition.y - thisPosition.y;

   float intersectX = (abs(DeltaX)) - (otherHalfsize.x+ thisHalfsize.x);
   float intersectY = (abs(DeltaY)) - (otherHalfsize.y + thisHalfsize.y);

  
  
   Move(50.0f, 0.0f);
  
  
   if (intersectX < 0.0f && intersectY < 0.0f)
   {
      push = std::min(std::max(push, 0.0f), 1.0f);
      
      if (intersectX > intersectY)
      {  
        
         if (DeltaX > 0.0f)
         {
         a = 1;
            Move(intersectX*(1.0f - push), 0.0f);
            other.Move(-intersectX*push, 0.0f);
         }

         else
         {
            a = 2;
            Move(-intersectX*(1.0f - push), 0.0f);
            other.Move(intersectX*push, 0.0f);
        
         }
      }
      else
      {
        
         if (DeltaY > 0.0f)
         {
            a = 3;
            Move(0.0f,intersectY*(1.0f - push));
            other.Move(0.0f,-intersectY*push );
         }

         else
         {
            a = 4;
            Move(0.0f,-intersectY*(1.0f - push));
            other.Move(0.0f,intersectY*push);

         }
      
      }
      return true;
   }




   return false;
}


And then in the main.cpp I called the 2 rectangleShapes to check if they collided with each other.
by using

box1.GetCollider().CheckCollision(player.GetCollider(),0.2f);

In the code you'll see that I try to call move  to the body which I've checked that a has changed from 1-4 (which means it works but not move anyof the rectangleShape)

Im still confusing this and can not solve. please help me.
คำตอบที่ได้รับเลือกจากเจ้าของกระทู้
ความคิดเห็นที่ 4
>
> ส่วนข้อ2 ผมไม่เข้าใจครับ คือผมเช็คตามที่เค้าเขียนน่ะครับ
>

@14:06
https://www.youtube.com/watch?v=l2iCYCLi6MU&t=14m6s

ในจอบรรทัดที่ 17 ต้องมี ampersand &
เพื่อบอก compiler ว่า ใน Collider เราต้องการเก็บ body ที่ผ่านค่ามาเป็นเฉพาะ address

sf::RectangleShape& body;

ถ้าตก & ไป compiler ก็จะเข้าใจ (ไปเอง) (สายมโน)
ว่าเราต้องการให้มัน copy ของ body เอาไว้อีกชุดหนึ่งต่างหาก
ดังนั้นเวลาสั่ง Move ก็เท่ากับ Move เจ้าตัว copy เฉย ๆ
ส่วนตัวจริงมันก็อยู่นิ่ง ๆ ของมันไปครับ
แสดงความคิดเห็น
โปรดศึกษาและยอมรับนโยบายข้อมูลส่วนบุคคลก่อนเริ่มใช้งาน อ่านเพิ่มเติมได้ที่นี่