まだちょっとだけ続くんじゃ。タッチパネルで、タッチした場所からボールが落ちるようにします。37と38は一行。 http://t.co/rea3MMu3d9
2014-05-17 00:04:48高いところからボールを落としていると、時々不自然な方向に弾むことがあります。V>=Rのとき、床にめり込んだ状態で判定することになり、縦と横のヒットが同時に発生しちゃうのです。
2014-05-17 00:08:14おちゃめさんの解説ではベクトルの外積を使うとあるけど、壁のベクトルデータを用意するのはおっくうである。HかVか、大きい方でHとVを割れば1ピクセルずつの移動になるから、めり込みは起きないんじゃないかな? プチコンの速度なら行けるはず!
2014-05-17 00:14:52プログラムの終わりの、VSYNCとGOTO ◎MAINをコメントアウトして、代わりにRETURNを追加します。コメントアウトした文は、まだ消しません。69のXをチェックするIF文も一緒にコメントアウト。 http://t.co/bCEFGo2U7W
2014-05-18 08:21:55ボール移動をサブルーチン化
コメントアウトした文を、コピー&ペーストでSPOFSとボール ススムの間(46〜50)に移します。ボール ススムの頭に◎BALLFWとラベルをつけ、これを40のGOSUB文で呼び出します。 http://t.co/emrxnJNXMI
2014-05-18 08:27:4240行のGOSUB文を実行すると、プログラムは56行のラベル◎BALLFWに飛びます。その後最後のRETURNに当たったら、プログラムは41行、元のGOSUBの次の文に戻ってきます。これがサブルーチン。
2014-05-18 08:34:50まだサブルーチン化のメリットは見えませんが、実はさりげなく実行順序を変えています。もともとBALLFWにあたるルーチンはSPOFSのあとにありました。
2014-05-18 08:39:191.ボール表示→2.移動先計算→3.画面外チェック(終了)、という流れの、1と2を逆にする変更がGOSUB文の位置だけでできるという小さなメリット。
2014-05-18 08:44:061ピクセル単位で動かせばめり込まない!
この◎BALLFWサブルーチンを、HかVの大きい方の回数Tだけ繰り返して、1ピクセル移動するたびに衝突判定を繰り返すことで、壁にめり込むのを予防します。 http://t.co/z3SnRfaeik
2014-05-18 20:01:33BALLFWサブルーチンにも修正が必要になります。76と83〜90の、衝突のあったところでTHとTVの値を変えて、H,VをTで割り直します。 http://t.co/XqwDIVl7u2
2014-05-18 20:04:06