ドッコーン!玉と玉の衝突を処理するぞ|スイカゲーム②
玉と玉が重なったかどうかを直線距離を使って算出し、重なっていれば衝突処理を行っていく。衝突は座標とスピードの計算が肝になってくるよ。この作品の最大の山場だから一緒にがんばろう!
Scratchでスイカゲームを作ろう!~衝突処理編~
こんにちは!Scratchでスイカゲームを作るときの「衝突」動画の要約を載せておくよ!ゲームの中で果物どうしがぶつかったときに、どうやって処理するのかを見ていこう!
①まずは距離を計算しよう!
ボールどうしがぶつかったかどうかを判断するには、直線距離と重なりという2つの値を計算する必要があるんだ。
【直線距離の計算】
1. お互いの距離X = 相手のX座標 - 自分のX座標
2. お互いの距離Y = 相手のY座標 - 自分のY座標
3. 直線距離 = √(お互いの距離X² + お互いの距離Y²)
これはピタゴラスの定理を使った計算なんだ!小学校で習った三角形の斜めの辺を求める公式だよ。
②ぶつかったかどうかを判断しよう!
次に、重なりという値を計算して、プラスならぶつかっている、マイナスならぶつかっていないと判断するよ。
重なり = ((自分の半径 + 相手の半径) ÷ 直線距離 - 1) ÷ 2
③ぶつかった後はどう動く?
ぶつかったあとの動きは2つのステップで計算するよ:
- 座標の計算: ぶつかった瞬間、お互いが少しずつ離れる方向に移動
- スピードの計算: ぶつかった力で、それぞれのボールのスピードが変わる
特にスピードの計算は難しいから、コードをしっかりコピーしてね!
④ボールの見た目を整えよう
ボールの大きさに合わせて、コスチュームも変えると見栄えがよくなるよ!
コスチューム番号 = (半径 ÷ 5) - 2
ボールの大きさ = 半径 × 2
こうすると、半径が大きくなるにつれて、自動的にコスチュームも変わって、見た目も大きくなるんだ!
⑤ボールを転がそう!
ボールが転がるような動きを実装するには:
X座標 = X座標 + スピードX
角度 = 角度 - 90°
これで、ボールが転がりながら移動する感じになるよ!
⑥壁にぶつかったときの反発
最後に、画面の端に触れたときに少し跳ね返るようにしよう:
スピードX = スピードX × 反発力 × (-1)
反発力は0.2くらいがちょうどいいかな。これで壁に当たったとき、ちょっと跳ね返るようになるよ!
今回は衝突処理という、ゲーム作りの中でも難しい部分をやったね!でも大丈夫、一つずつ順番にコードを作っていけば、きっとできるよ。次回は雲から弾を落とす機能を作って、もっとスイカゲームらしくしていくよ!頑張ろう!
スクラッチャーからのコメント
ピタゴラスの定理を忘れた時に毎回スイカゲームの作り方講座第2回の動画を見て思い出してます( ̄ー ̄)bグッ!
@yuppon3131
おお!あの動画を観てもらえるなんて、嬉しいです。ピタゴラスはまじゲーム作りで色々役に立つので、時代を越えてスゴイ。まさかこんなふうに役立つとは予想していなかったことでしょう。
スイカゲームの作り方②のサイト以降がなぜか見られないんですけどどうすればいいでしょうか
https://scratch.coach/lesson/handling-collision/
このサイトです
@kuripa-kun ご連絡ありがとうございます!動画は見れますか?この記事には動画しかないです。
@ok-scratch ありがとうございます
見れました
読み込みが遅かったみたいです
@kuripa-kun それは、サイト側の問題ですね、すいません。観れてよかったです(*^^*)
@ok-scratch わざわざ見てくれてありがとうございました!
あの...
動画参考にしてやってみてるんですが、なぜか横に行ってしまって...
@ojiro_oshiba コメントありがとうございます!横というのは、玉が下に落ちないで横に行く感じですか?おそらくY座標にすべきところがX座標になってるのかなぁと思うのですがどうでしょうか
@ok-scratch ありがとうございます!いつもお世話になってます!
@ojiro_oshiba いえいえ〜、直るといいのだけど。ふぁいと( ´∀`)bグッ!
2つ変なところあるんですけどなんか4個・6個くだものを同じ所に重ねるとバグる & くだものばらまくと物理演算がおかしいんですけど合ってますか? https://scratch.mit.edu/projects/948900530/
@hukkana01
同じところに重ねると挙動が変、っていうのは第何回か分からないけど修正する動画があるので、いまのところOKです!ボヨンボヨンなります……。もう1つのは見てみますね!
@hukkana01
ちなみに「ばらまくと物理演算がおかしい」と感じたのはどういう挙動でしょうか。
@ok-scratch
そうですね。ボヨンって感じな気がします 勝手に箱の上にバン!ってなったりします
@hukkana01
ブロック定義「_衝突後のスピードを計算する」の下から3つ目の演算に誤りがありました。変更前「_お互いの距離Y(◯こ分) * _自分が生む力Y」これを次のように直してください。変更後「_お互いの距離X(◯こ分) * _自分が生む力Y」これでポヨンしなくなるかなと(*^^*)
@ok-scratch
実は小3です
(ここだけの話です、内緒)
@ok-scratch
まぁ せみまるさんもでもね、「そうやって子供たちはSNSを学んでいくの 社会の入り口の第一歩なのスクラッチは」って言ってたから大丈夫じゃない?(棒)
@ok-scratch
あ、ちなみに直りました、ありがとうございます!
@hukkana01
直ってよかった!そうだね、まぁそれ以上深い個人情報みたいなのは言うべきではないと思う。リスクとかってよりも、言っても良いことないし。引き続きがんばってね(*^^*)
@ok-scratch
はい!
新動画!!!(6分前)
@hukkana01
早い!チェックありがとうございます♪スイカゲームはメニュー画面まで作り込む予定なり。
@ok-scratch
途中まで作ったんですけどなんか進化の定義を実行するとホラーのようにバグりますwww
https://scratch.mit.edu/projects/948900530/
違うところがあったら教えてください
@hukkana01
ホントですね、ホラーですね(笑)ブロック定義「玉同士の関係を更新する」の最後に余計な「進化する」ブロックがくっついちゃってます。これ取ればいけるかなと!ファイト(*^^*)
@ok-scratch
本当だ直りました ありがとうございます!
@ok-scratch
本当にすみません2つ変なところあるんですけどなんか4個・6個くだものを同じ所に重ねるとバグる & くだものばらまくと物理演算がおかしいんですけど合ってますか?
これ間違っているところありますか?https://scratch.mit.edu/projects/938356882/
@maple_tayama
パッと見ですが良さそう。このあと魔の衝突処理ですね……。
@ok-scratch
ありがとうございます(^^♪
スクラッチゲーム攻略
スクラッチゲーム一覧
- あ行
- あ Appel
- あ RPG
- あ あつまれ どうぶつの森
- あ アクションゲーム
- あ アスレチック
- あ アモングアス
- あ アンダーテール
- あ 青の塔
- あ 青鬼
- い Incredibox
- え エーペックス
- お 落ちゲー
- か行
- か カービィ
- か 格闘ゲーム
- が がっぽり寿司ゲーム
- き キャプテンロケット
- き 恐竜ゲーム
- く クリッカーゲーム
- こ コールオブデューティー
- こ 荒野行動
- さ行
- し シミュレーションゲーム
- し シューティングゲーム
- し 射的・銃ゲーム
- じ ジオメトリーダッシュ
- じ ジャグラー
- す 3Dゲーム
- す スイカゲーム
- す スプラトゥーン
- す スマブラ
- す 寿司打
- せ 戦車ゲーム
- ぜ ゼルダの伝説
- そ ソニック
- た行
- た TACT-AIM
- た たまごっち
- た タワーディフェンスゲーム
- た 大砲ゲーム
- た 太鼓の達人
- た 戦うゲーム・バトル
- だ ダダサバイバー
- だ ダンシングライン
- だ 大戦争ゲーム
- だ 脱出ゲーム
- ち ちいかわ
- つ ツムツム
- つ 壺男
- て テトリス
- て テラリア
- で デルタルーン
- ど ドロップザナンバー
- ど ドロップザボール
- ど ドンキーコング
- な行
- に 2048
- に にゃんこ大戦争
- の 脳トレ
- は行
- は 8番出口
- ぱ パズドラ
- ぱ パックマン
- ぴ ピクミン
- ふ ファイブ・ナイツ・アット・フレディーズ
- ふ フォートナイト
- ふ フォールガイズ
- ふ フライデー・ナイト・ファンキン
- ふ フラッピーバード
- ぶ ブロスタ
- ぶ ブロック崩しゲーム
- ぷ ぷよぷよ
- へ ヘビゲーム
- へ ヘリコプターゲーム
- ぺ Paper.io
- ほ ホラーゲーム
- ほ 放置ゲーム
- ぼ ボンバーマン
- ぼ ボールころころ
- ぼ ボールブラスト
- ぽ ポケモン
- ぽ ポピープレイタイム
- ま行
- ま まち針ゲーム
- ま マイクラ
- ま マインスイーパー
- ま マリオ
- も もちもちスライム
- も モンスト
- も モンハン
- も 桃鉄
- や行
- や 野球
- よ 妖怪ウォッチぷにぷに
- ら行
- り リズム天国
- れ レースゲーム
- ろ ロックマン
- ろ ロブロックス
- 他
- わ わんこ大戦争
- ヴ ヴァロラント
- 落 落ちものパズル
- 趣味全般
- あ アニメーション
- あ アート
- い イラスト
- う UNO(ウノ)
- う 歌・曲のスクリプト演奏
- え エレベーター
- お オセロ
- お 音楽
- か カオスバトル
- か カードゲーム
- か 仮面ライダー
- く クレーンゲーム
- く 車運転ゲーム
- け 消しゴム落とし
- こ 工作
- し 将棋
- す スクラッチの文化
- つ 釣りゲー
- で デザインゲーム
- で 電車
- ど ドナルド(マック)
- ば バイク
- ぱ パズル
- ひ 飛行機
- べ ベイブレード
- め メダルゲーム
- め 迷路
- り 料理
- 映像作品、テレビ番組、漫画、動画などに関連したもの
- い イカゲーム
- が ガンダム
- き 鬼滅の刃
- し 進撃の巨人
- じ 呪術廻戦
- す すとぷり
- と 逃走中
- ど ドラえもん
- ど ドラゴンボール
- ね ネプリーグ
- ま マッシュル
- わ ワンピース
- ゲームセンター系
- げ 激カザーン
- す スロット
- ぱ パチンコ
- ほ ホリアテール
- み みんなでダービー(競馬)
- れ 連射でアタック
- kawaii系
- あ アイコン
- き 着せ替えゲーム
- ぺ ペット(育成)ゲーム
- スポーツ・運動系
- お 鬼ごっこ
- ご ゴルフ
- さ サッカー
- す スケボー
- す スポーツ全般
- た 卓球
- て テニス
- ば バスケ
- ぼ ボクシング
- ゆ 雪合戦・雪遊び