2

SFML ライブラリを使用して C++ でブレイクアウト ゲームを作成しています。「パドル」クラスと「ボール」クラスがあり、どちらも「ゲーム」クラスで更新およびレンダリングされ、「ウィンドウ」クラス。

私の問題は、Ball オブジェクトが Paddle オブジェクトと衝突したかどうかを判断するために、明らかに Paddle オブジェクトの x/y 位置データ メンバーにアクセスする必要があることです。オブジェクトごとに update (または tick) 関数を使用しています。Paddle オブジェクトへの参照を Ball の update 関数に渡すだけでは不十分です。

目的の機能を実現するための一般的に受け入れられている方法は何ですか?

ここに私のボールヘッダーがあります:

class Ball
{
public:
    Ball(float x, float y, int size, sf::Vector2f moveSpeed);
    ~Ball();

    void Tick();
    void Move();
    void Render(sf::RenderWindow& window);
    void Reset();

    sf::Vector2f GetMoveSpeed() { return m_moveSpeed; }

private:
    void CheckCollision();

    int m_size;
    sf::Vector2f m_moveSpeed;
    sf::Vector2f m_position;
    sf::CircleShape m_ballCircle;
};

これが私のゲーム更新機能です:

void Game::Update()
{
    m_window.Update();
    m_ball.Tick();
    m_paddle.Tick();
}
4

2 に答える 2