Scratch リミックスで学ぶ:ピンポンゲームに高速移動・パドル変形・跳ね返り角度制御の機能を追加

Scratch リミックスで学ぶ:ピンポンゲームに高速移動・パドル変形・跳ね返り角度制御の機能を追加

ピンポンゲーム(前回の記事でコード解析を実施した)に、パドルを高速移動できる機能と、パドルを楕円形に膨らませることで、ボールの跳ね返り角度を変える機能を追加します。「移動速度の変更(加速度を取り入れる)」「スプライトの進行方向角度の制御」「ブロック定義の使い方」などを学ぶことが出来ます。

今回作成するプロジェクト

以下のプロジェクトはScratchホームページで公開していますので、プログラム全体はそちらのページでご確認下さい。主要部分について、以降説明します。

パドルのダッシュ機能

機能の詳細説明

①ダッシュキーを押している間、パドルの移動速度が加速します。
② ダッシュキーを離すと、 パドルの移動速度は初期値に戻ります。
③ ダッシュキーを押した状態で方向転換すると、 パドルの移動速度は初期値に戻ります。

定義/変数

プレイヤー1のダッシュキー : 「↓(下矢印)」
プレイヤー2のダッシュキー : 「S」
vx : パドルの移動速度 (パドルスプライトのみ)
ax : パドルの加速度 (パドルスプライトのみ)

プログラム

パドル1のプログラムについて説明します。パドル2はパドル1と同様のプログラムなので、ここでの記載は省略します。プログラムが少し長いので見易くするために、ブロック機能を使って「加速度の設定」「右方向の速度設定と移動」「左方向の速度設定と移動」 の3つに分けます。

■パドル1の加速度
「もし<↓(下矢印)> を押されたなら」 ax1=1にします。
「そうでなければ」ax1=0にします。

■パドル1の移動速度
「もし<→>を押されたなら」 移動速度vxが0より大きい場合はvx=5にします。
 そして、移動速度を「vx=vx+ax」の式で更新し、x座標を<vx>ずつ変えます。
「もし<←>を押されたなら」 移動速度vxが0より小さい場合はvx=-5にします。
 そして、移動速度を「vx=vx-ax」の式で更新し、x座標を<vx>ずつ変えます。

パドルをふくらませる機能

機能の詳細説明

①ふくらみキーを押している間、パドルがY座標方向にふくらみます(楕円に変形する)。
②パドルとボールの接触位置によって、ボールの跳ね返り方向が変わります。パドルがふくらんでいないときは、ボールがパドルのどの部分にあたっても、同じ角度で跳ね返ります(平らな壁にあたって跳ね返るイメージ)。パドルがふくらんでいるときは、中心部分に当たると同じ角度で跳ね返し、中心から離れた部分に当たると、離れた分だけ角度をつけて跳ね返します(パドルが丸くなるため、その丸みの分だけ角度がつくイメージ)。

コスチューム

膨らんだパドル(楕円パドル)を追加する。

定義/変数

ふくらみキー : 「↑(上矢印)」
パドル1のx座標 : p1-x (すべてのスプライト)
パドル2のx座標 : p2-x (すべてのスプライト)

プログラム

■パドル1のコスチューム
長方形のコスチュームを「line」とします。
楕円形のコスチュームを「oval」とします。

■パドル1のコスチューム変更
パドル1の初期化が完了したら、メッセージを送ります。そのメッセージを受けて、コスチュームの変更ループ「ずっと」を実行します。その中で、先程定義した「ふくらみキー」が押されている場合は、コスチュームを「oval」にします。そうでなければ、コスチュームを「line」にします。

■ボールがパドル1と接触したときの跳ね返り角度
①パドルのコスチュームが楕円形のとき
 ボールがパドル1と接触したとき、もし↑矢印が押されていれば、楕円形だと判断し、ボールの角度を「80*((x座標 – p1-x) / 50)」の角度に向けます。 「x座標 – p1-x」はボールとパドル1の横方向の位置がどれだけずれているかを計算しています。パドルの横幅は101なので、差分は最大で±50となります。したがって、その計算結果を50で割ると、その計算結果は-1~+1の範囲に収まります。最大角度は80度に設定したいため、80を掛け算しています。
 パドル2も同様ですが、跳ね返り方向がパドル1とは逆なので、演算式に注意してください。演算式は、 「180+80*((p1-x – x座標 ) / 50)」 です。角度は、画面上方向が0度、右が90度、下が180度、左が270度(-90度)なので、紙に書いてよく考えて理解を深めて下さい。

Scratchカテゴリの最新記事