SFML中的碰撞不是那么好,如何改进呢?

QAp*_*pps 3 c++ collision sfml

我最近一直在使用C++和SFML最新版本进行一个简单的游戏,但我遇到的问题是碰撞检测不是那么好,例如即使敌人没有碰到他,玩家也会死亡,但是就在他身边.以下是具有移动功能和碰撞检测代码的玩家类的代码以及敌人类的移动:

`class PlayerA:public CircleShape {public:

    //Constructor:
    PlayerA(float xposition, float yposition, float radius, float s)
    {
        setRadius(radius);
        setFillColor(Color::Yellow);
        setOutlineColor(Color(00,80,00));
        setOutlineThickness(-2);
        setPointCount(3);
        setSpeed(s);
        setPosition(xposition,yposition);
    }

    //Movements of the player:
    void up()
    {
        move(0,-10*speed);
    }
    void down()
    {
        move(0,10*speed);
    }
    void right()
    {
        move(10*speed,0);
    }
    void left()
    {
        move(-10*speed,0);
    }
     void checkA(ObsA *obs1=NULL,ObsA *obs2=NULL, ObsA *obs3=NULL, ObsA *obs4=NULL, ObsA *obs5=NULL)
    {
        if(obs2==NULL)
        {
            if(getGlobalBounds().intersects(obs1->getGlobalBounds()))
            {
                relevel();
            }
        }
     private:
      float speed=0.00;

    void obs()
    {
        if(speed > 0)
        {
                rotate(0.5*speed);
        }
        else
        {
                rotate(0.5*speed);
        }
    }


private:
    float speed = 0.00;


    void obs()
    {
        if(speed > 0)
        {
                rotate(0.5*speed);
        }
        else
        {
                rotate(0.5*speed);
        }
    }


private:
    float speed = 0.00;
Run Code Online (Sandbox Code Playgroud)

代码有问题,如何解决问题,谢谢!

Jes*_*uhl 6

intersects函数只检查两个矩形是否相交.如果你想在SFML中进行像素完美碰撞检测,你必须自己编写.

基本上,intersects如果是真的话,首先得到相交的矩形并检查两个原始矩形中的任何像素是否包含重叠的相关像素.