Discuss Scratch
- Discussion Forums
- » 日本語
- » ゲーム作成のテクニック
- digitarhythm
-
Scratcher
18 posts
ゲーム作成のテクニック
Scratch2.0でゲームを作る場合の定石的なものをポストしていこうと思います。
(自分のための備忘録的な事も兼ねています)
(自分のための備忘録的な事も兼ねています)
- digitarhythm
-
Scratcher
18 posts
ゲーム作成のテクニック
よくあるキャラクターを動かして敵に当たったら的なゲームの場合。
ゲームキャラクターに絵はつきものですが、当たり判定などに絵そのものを使うと難易度の調整などが複雑になります。
この当たり判定もゲームバランスを取る上でかなり重要になるので、画面に出ているキャラクターとは別に「当たり判定用」のスプライトを作成し、当たり判定はそのスプライトで行うようにします。
サンプル
このサンプルでは、実際の当たり判定は猫の絵の大きさで取られていないのが分かると思います。
ゲームキャラクターに絵はつきものですが、当たり判定などに絵そのものを使うと難易度の調整などが複雑になります。
この当たり判定もゲームバランスを取る上でかなり重要になるので、画面に出ているキャラクターとは別に「当たり判定用」のスプライトを作成し、当たり判定はそのスプライトで行うようにします。
サンプル
このサンプルでは、実際の当たり判定は猫の絵の大きさで取られていないのが分かると思います。
Last edited by digitarhythm (Feb. 25, 2017 15:01:27)
- digitarhythm
-
Scratcher
18 posts
ゲーム作成のテクニック
キャラクターがジャンプするタイプのゲームの場合は、重力と縦方向の移動量を使うと作りやすいです。
移動量はなにもしなくても「ずっと」ループの中で、毎回重力の値が加算されていきます。
この移動量をY座標に足していきます(Scratchは直交座標系なので重力の値がマイナスになります)。
こうすると擬似放物線を描く動きが作れます。
なにかのキーが押された時に、移動量にプラスの数値を入れるとジャンプします。
このままではキャラクターが画面の一番下まで行ってしまいますので、なにかとの衝突判定を行います。
これは色でもスプライトでもいいのですが、Y座標を変更してその都度当たり判定を取るやりかただと、障害物ギリギリまで行くことが出来ません。
この場合は、「Y座標を1(もしくは-1)づつ変える」を移動量だけ行います。
途中で当たり判定でぶつかっていた場合は、ひとつ前に座標に戻し、それ以降は座標の値は変えません。
これで障害物ぎりぎりまで寄ることが出来ます。
サンプル
このサンプルでは、カーソルキーの左右で移動し、カーソルキーの上でジャンプします。
カーソルキーの上を押している時間の長さでジャンプする高さが変わります。
なので、キーを離した時にジャンプします。
移動量はなにもしなくても「ずっと」ループの中で、毎回重力の値が加算されていきます。
この移動量をY座標に足していきます(Scratchは直交座標系なので重力の値がマイナスになります)。
こうすると擬似放物線を描く動きが作れます。
なにかのキーが押された時に、移動量にプラスの数値を入れるとジャンプします。
このままではキャラクターが画面の一番下まで行ってしまいますので、なにかとの衝突判定を行います。
これは色でもスプライトでもいいのですが、Y座標を変更してその都度当たり判定を取るやりかただと、障害物ギリギリまで行くことが出来ません。
この場合は、「Y座標を1(もしくは-1)づつ変える」を移動量だけ行います。
途中で当たり判定でぶつかっていた場合は、ひとつ前に座標に戻し、それ以降は座標の値は変えません。
これで障害物ぎりぎりまで寄ることが出来ます。
サンプル
このサンプルでは、カーソルキーの左右で移動し、カーソルキーの上でジャンプします。
カーソルキーの上を押している時間の長さでジャンプする高さが変わります。
なので、キーを離した時にジャンプします。
Last edited by digitarhythm (March 1, 2017 10:30:49)
- digitarhythm
-
Scratcher
18 posts
ゲーム作成のテクニック
ゲームでもゲームじゃなくてもプログラムの見やすさは重要だと思う。
そうですね、1ヶ月後の自分が読んでも、コードが理解出来るような作りが理想ですね。
- hota1024
-
Scratcher
100+ posts
ゲーム作成のテクニック
「リーダブルコード」ですねゲームでもゲームじゃなくてもプログラムの見やすさは重要だと思う。
そうですね、1ヶ月後の自分が読んでも、コードが理解出来るような作りが理想ですね。
よりよいコードを書くためのシンプルで実践的なテクニック
- digitarhythm
-
Scratcher
18 posts
ゲーム作成のテクニック
「リーダブルコード」ですねゲームでもゲームじゃなくてもプログラムの見やすさは重要だと思う。
そうですね、1ヶ月後の自分が読んでも、コードが理解出来るような作りが理想ですね。
よりよいコードを書くためのシンプルで実践的なテクニック
読みやすいコードにしておくと、リファクタリングをする時にも役に立ちます。
- hota1024
-
Scratcher
100+ posts
ゲーム作成のテクニック
理解しやすいコードを書くのはどんなプログラミング言語にとっても重要ですね。「リーダブルコード」ですねゲームでもゲームじゃなくてもプログラムの見やすさは重要だと思う。
そうですね、1ヶ月後の自分が読んでも、コードが理解出来るような作りが理想ですね。
よりよいコードを書くためのシンプルで実践的なテクニック
読みやすいコードにしておくと、リファクタリングをする時にも役に立ちます。
(話がちょっと変わってしまいましたね_(._.)_)
Last edited by hota1024 (March 1, 2017 13:13:42)
- digitarhythm
-
Scratcher
18 posts
ゲーム作成のテクニック
理解しやすいコードを書くのはどんなプログラミング言語にとっても重要ですね。「リーダブルコード」ですねゲームでもゲームじゃなくてもプログラムの見やすさは重要だと思う。
そうですね、1ヶ月後の自分が読んでも、コードが理解出来るような作りが理想ですね。
よりよいコードを書くためのシンプルで実践的なテクニック
読みやすいコードにしておくと、リファクタリングをする時にも役に立ちます。
(話がちょっと変わってしまいましたね_(._.)_)
後々、リファクタリングする事を前提にするのであれば、最初はまず動くことが大事なので、正しく動く事を第一に作るのもありです。
私は最初のリファクタリングで無駄を削り、2回目のリファクタリングでアルゴリズムを最適化しています。
だいたいリファクタリングは2回行うと最適なコードになります。
- hota1024
-
Scratcher
100+ posts
ゲーム作成のテクニック
無理に読みやすさ重視で作って「動かない!_| ̄|○ il||li」となるよりも、ちゃんと「書いたとおりに動いているか」を確認しながら僕はプログラムを書いています。そのあとからリファクタリングを行って読みやすいコードに整形しています。理解しやすいコードを書くのはどんなプログラミング言語にとっても重要ですね。「リーダブルコード」ですねゲームでもゲームじゃなくてもプログラムの見やすさは重要だと思う。
そうですね、1ヶ月後の自分が読んでも、コードが理解出来るような作りが理想ですね。
よりよいコードを書くためのシンプルで実践的なテクニック
読みやすいコードにしておくと、リファクタリングをする時にも役に立ちます。
(話がちょっと変わってしまいましたね_(._.)_)
後々、リファクタリングする事を前提にするのであれば、最初はまず動くことが大事なので、正しく動く事を第一に作るのもありです。
私は最初のリファクタリングで無駄を削り、2回目のリファクタリングでアルゴリズムを最適化しています。
だいたいリファクタリングは2回行うと最適なコードになります。
(やり方はほぼ同じですね)
スクラッチでもこの考え方は使えますね。
リファクタリングも出来ますし、ただスクラッチの関数には「戻り値」がないので少し見にくく感じてしまうのがたまにきずです。
早くスクラッチに実装されないかな~(殴(引退宣言した人が何言ってんだ(笑)
- Discussion Forums
- » 日本語
-
» ゲーム作成のテクニック

