![見出し画像](https://assets.st-note.com/production/uploads/images/59689392/rectangle_large_type_2_a6d1bfaf18f2e18733df5b2c117ddba9.png?width=800)
クネクネ動くヘビのような動きを作る!なぞって学ぶプログラミングドリル(Processing / p5js)
なぞって学ぶプログラミングドリルとは?
この教材は小学生〜高校生までのプログラミング初心者向けに作られた、ゲームプログラミング教材です。
この教材にサンプルコードは登場しません。
Scratchのブロックで構成されたアルゴリズム(設計)だけを提示します。
アルゴリズムをなぞって、コードにおきかえていきましょう。
なお、Processingやp5.jsを想定してアルゴリズムを設計しています。
今回作るもの
カーブしながら移動する、ヘビのような独特な動きを作ります。この操作感をどうゲームに活かすかはみなさん次第です。
技術的には三角関数(sin、cos)が登場します。
![画像1](https://assets.st-note.com/production/uploads/images/59669540/picture_pc_adebf313245f49e448a9c2b8ea7bba93.gif?width=800)
動画で学習する
この教材の内容をYouTube動画で解説しています。
動画を見ながら学習しても良いですし、復習などにお使いください。
カーブの軸となる中心点を、とりあえず、赤円で表示する
作成していく過程で混乱するので、先にカーブの中心点を補助として赤く表示しておきます。
![画像2](https://assets.st-note.com/production/uploads/images/59669757/picture_pc_d1d511939f249d80cecb4716900850b4.png?width=800)
// 以下はp5jsでのサンプルコードです。
function setup(){
createCanvas(600, 400);
}
function draw(){
background(0);
fill(255, 0, 0);
ellipse(300, 200, 10, 10);
}
中心点を変数にする
center_xとcenter_yという変数を作りました。
これらはあくまでも補助となる中心点の座標なので注意してください。
![画像3](https://assets.st-note.com/production/uploads/images/59669947/picture_pc_2a9ea04413e9b6633f4f761ee32c8d31.png?width=800)
プレイヤーとなる円を表示する
中心点から、距離50離れた場所にプレイヤーとなる円を表示します。
![画像4](https://assets.st-note.com/production/uploads/images/59670179/picture_pc_79720ae3115cfa3e67ab6f990c53afe7.png?width=800)
三角関数を使ってプレイヤーの座標を決定する
三角関数を使うためには、まずは角度をラジアン値にする必要があります。
角度をラジアン値に変換する方法は自分で調べてみましょう。
ラジアン値をsin、cosに渡して、距離である50をかけてみましょう。
また、例では0度の場合ですが、90度、180度、270度、360度の場合も見てみて動作を確認してみましょう。
![画像5](https://assets.st-note.com/production/uploads/images/59670243/picture_pc_819f1146fce232dd8a9c61e571dc1b00.png?width=800)
回転させる
度数を管理する変数degreeを用意し、degreeをラジアン値に変換します。
degreeを1ずつ加算していけば回転していくことを確認しましょう。
![画像6](https://assets.st-note.com/production/uploads/images/59670336/picture_pc_c2170c4e4350726b0b6800f04e810397.png?width=800)
マウスクリックで中心点を移動させる
中心点であるcenter_xとcenter_yを移動させます。
中心点が移動してもプレイヤーの位置は移動させないようにするため、度数degreeを180加算して真逆に移動させています。
![画像8](https://assets.st-note.com/production/uploads/images/59672205/picture_pc_a7b3ce768fc531c7ceb15dd8d6ba056d.png)
![画像7](https://assets.st-note.com/production/uploads/images/59670437/picture_pc_58b1e9ebd6ea1c47d99b7402a8cfe682.png?width=800)
課題1. 補助となっていた中心点を非表示にする
そろそろいらないと思うのでコメントアウトしておきましょう。
課題2. マウスクリックで逆回転させる
逆回転させることでクネクネ動くような演出になります。
自由課題. この動きを使ってゲームを考えて作ろう
あとはあなた次第!
特に思いつかなければ次のスーパー課題に挑戦しても可。
スーパー課題. 尻尾を作ってヘビにしよう
冒頭のGIF動画のように、しっぽを作ってヘビのプレイヤーにしてみよう。
難しいのでスーパー課題にしました。ヒントは配列です。
やり方がわからなかったら動画解説を見てみてください。このスーパー課題も解説しています。
今回やったソースコード
OpenProcessingを使って実際に動作と、ソースコードの確認ができます。
この記事が気に入ったらサポートをしてみませんか?