ボールが壁から飛び跳ねるゲームがあります。これは座標平面上にあります。ゲームをより面白く保つためにバウンスするときに、少々ランダム性が欲しいと思っています。ボールを一定のスピードで維持しながら、これをどうすればいいですか?今、私のコードは、それが直角でバウンスすることを意味します。ボールが跳ね返るときにボールの新しい角度を見つける(座標を使用)
ウィンドウの左上隅は0,0で、右下はwinW、winHです(今度は800,800に設定されています)。
ball.cppは、あなただけの速度を裏返しに加えて、ボールにランダムな角度を追加することができ
pos.x = start.x;
pos.y = start.y;
speed.x = .4f; // the f indicates that it's per frame.
speed.y = .4f;
void Ball::hitLeftRight() {
speed.x = -speed.x;
}
void Ball::hitTopBottom() {
speed.y = -speed.y;
}
void Ball::reset() {
// for a new level in game
pos.x = start.x;
pos.y = start.y;
}
void Ball::update() {
// called every frame
pos.y += speed.y;
pos.x += speed.x;
ballShape.setPosition(pos);
}
...クランプされたランダム生成番号を追加することによって? – pmaxim98
速度と反射角は独立しているので何ですか? –