我正在使用 SFML 库在 C++ 中制作一个 Breakout 游戏,我有一个“桨”类和一个“球”类,它们都在“游戏”类中更新和渲染,它使用来自“窗口”类。
我的问题是,为了确定 Ball 对象是否与 Paddle 对象发生碰撞,我显然需要访问 Paddle 对象的 x/y 位置数据成员。我正在为每个对象使用更新(或刻度)函数,我宁愿不只是将对 Paddle 对象的引用传递给 Ball 的更新函数。
实现我想要的功能的普遍接受的方法是什么?
这是我的球头:
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();
}