プチコンのプ - 復活 - 跳ね返るボールの巻

卓球ゲームを作りたいという質問が目についたので、2Dのサンプルプログラムを作ってみました。
1
アマゾンおもちゃbot @Xshop2

プチコンmk2の質問です。 卓球のゲームを作ろうと思っています。 ですが、ボールの跳ね返り処理とかが、 どうやったらできるのかがわかりません。 どなたか分かる方、回答お願いいたし,... http://t.co/avShPwVdiO

2014-05-10 12:37:39

これはYahoo!知恵袋から回ってきた質問のようです。
http://detail.chiebukuro.yahoo.co.jp/qa/question_detail/q11128851936

2画面ほどでサンプルプログラムを作ってみました。

プチコンのプ。 @p4petitcom

2Dだったら、ボールの縦横の進行方向を変数HとVに入れておき、1フレームごとにボールの座標XとYに足していきます。 http://t.co/vxZcFsAh5x

2014-05-11 09:29:30
拡大
プチコンのプ。 @p4petitcom

はね返りは、次の座標を一度、変数TXとTYに入れます。(TX+RH,TY)と(TX,TY+RV)のGRP画面の色をチェックすると、壁があるかないかがわかります。 http://t.co/cA868h9lh9

2014-05-11 09:36:37
拡大
プチコンのプ。 @p4petitcom

サンプルプログラムでは、壁をGRP画面に描いているので判定がお手軽です。19,20行のHやVの値を変えると、ボールの角度や速さが変わります。8より大きくすると、壁をすり抜けてしまうかも。

2014-05-11 09:47:22
プチコンのプ。 @p4petitcom

よく見ると時々壁の角をすり抜けているのは、お手軽版で(TX+RH,TY)と(TX,TY+RV)の二点しかチェックしていないから。実質◆なのです。(TX+RH*0.7,TY+RV*0.7)を見るといいでしょう。

2014-05-11 09:54:49
プチコンのプ。 @p4petitcom

壁は自由に描けますが、曲線や球の反射は不自然になるので、GFILLで◼︎を描くのが良いでしょう。

2014-05-11 10:00:56
プチコンのプ。 @p4petitcom

プチコンのプのプログラムは、自由に改造して自作プログラムとして発表してOKです。思い通りに改造して、プチコンmkⅡを遊び倒しましょう!

2014-05-11 10:04:19

おちゃめさんの解説

おちゃめ @ochame_nako

「プチコンで卓球ゲームを作りたいけどボールの跳ね返り処理がよく分からない」という人を見かけたのでボールを使ったゲームを作る際に役立つかもしれないゲームの動き処理(空気抵抗の表現など)についてまとめてみました。 #petitcom http://t.co/8Wa66hrQ8p

2014-05-13 00:25:39
拡大
おちゃめ @ochame_nako

さきほどツイートした跳ねたり空気抵抗がある場合のボールの動きを確認できるテストプログラムを作りました。ちなみに私が作っている卓球ゲームはこれを3次元座標で計算したものを使っています。 #petitcom http://t.co/dWKW8IW1vn

2014-05-13 00:34:43
拡大
おちゃめ @ochame_nako

http://t.co/8Wa66hrQ8p - 昨日書いたこのボールの動きのまとめですが、重力のあるときの動きにミスが見つかりました。正しくはVX=COS(A)*V、VY=-SIN(A)*Vです。注釈ではちゃんとVYはマイナスになると書いていますが。 #petitcom

2014-05-13 21:47:40
拡大
おちゃめ @ochame_nako

テニス、卓球、バレーボールなどのゲームを作る時に便利な超簡単で確実なボールとネットの当たり判定の方法です。私がポケコンで作ったビーチバレーのゲームでもこの方法を使用しています。 #petitcom http://t.co/8Plyd2i8C3

2014-05-13 23:57:12
拡大

重力をつけてみよう

プチコンのプ。 @p4petitcom

おちゃめさん @ochame_nako の解説を参考に、ボールの動きに重力をつけましょう! 肝は26の変数Gですが、壁を少し低くします。 http://t.co/bnboSSdmPG

2014-05-14 23:41:36
拡大
プチコンのプ。 @p4petitcom

2枚めの追加は50行だけ! これでボールが落ちて弾みます。途中でハマりますが^^; http://t.co/SPrS4h6Yrl

2014-05-14 23:39:14
拡大
プチコンのプ。 @p4petitcom

ボールが弾むたびに少しずつ勢いがなくなるよう、反発係数を入れます。ほんの2行でOK! ただし底についたあと永遠に転がっています^^; http://t.co/P671xx0brz

2014-05-14 23:57:40
拡大
プチコンのプ。 @p4petitcom

床に接触した時の処理が長くなったので、47のIF文は、Cが0以外の時床に接触ということで49〜55の命令を実行します。ただし52は51の続きです。入力したら頭の'を取って51につないでください。 http://t.co/9jrN2ChmQs

2014-05-15 00:52:18
拡大
プチコンのプ。 @p4petitcom

ABS(V)…反発力が、-Gより小さくなったらもう弾まないので、Vを0にします。ABS(H)…転がる速度がFより小さくなったらHを0にするのは解説通り。

2014-05-15 00:57:33
プチコンのプ。 @p4petitcom

係数名が解説とコードで違っているので、ちょっとややこしいかも。最初合わせたらバグった。なぜならGSPOITの結果をCに入れていたから。

2014-05-15 01:00:00
プチコンのプ。 @p4petitcom

しかしこれだけの修正で、ずいぶんボールの動きがリアルになりますものです。本日はここまで。

2014-05-15 01:00:54
おちゃめ @ochame_nako

先日書いた「ボールの動きのアルゴリズムのまとめ」の解説と補足を書いてみました。 http://t.co/5RKlTmtwqb バレー、テニス、卓球、ゴルフなどボールを使ったゲームを作ってみたいと思っている人には役に立つかもしれません。 #petitcom

2014-05-15 00:11:13
プチコンのプ。 @p4petitcom

おちゃめさんの解説、長いけど大変参考になります。これを読んで、ゆうべのサンプルの問題に気がついた人はえらい!(笑)

2014-05-15 08:28:29

タッチパネルを使うと…