c++ - SFML 中的碰撞不是那么好,如何改进它?

标签 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;

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

最佳答案

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

基本上,从 intersects 开始,如果为真,则获取相交矩形并检查两个原始矩形中是否有任何像素包含重叠的相关像素。 p>

关于c++ - SFML 中的碰撞不是那么好,如何改进它?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38227166/

相关文章:

c++ - WCHAR* 结尾包含垃圾

c++ - 将 boost::property_map 复制到 boost::vector_property_map

objective-c - 检测 Sprite 套件中数组中的对象之间的碰撞

static-linking - MinGW-w6 4's ar.exe can' t 尝试构建静态库时找不到库

c++ - SFML:在 pollEvent 循环之前调用 waitEvent

c++ - 找到两个整数,使得它们的乘积接近给定的实数

c++ - 你能在没有列表或 vector 的情况下遍历类对象吗?

Javascript:球体碰撞和产生的脉冲

python - Pygame 更改级别 - 由列表组成的级别

c++ - SFML 拾色器问题