てきとうな足跡
イラストやらバイトの事を書いている大学生のブログ
スポンサーサイト
上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。
ブロック崩し
前回に引き続きJavaScript勉強中
「javascript ゲーム作成」とか検索すると丁寧に説明してくれるサイトがありました。

今回は「ゲームの作り方 by BFF」さんを参考にしながらブロック崩しを作ってみた。
ゼロから始める「ゲームの作り方」入門 by BFF:
http://www.bluefoun.pos.to/games/howto/howto.html

製作物:
http://mozaedon.web.fc2.com/ballbound/blockout4.html

<改良点?>
・「よくある質問と回答」を参考にしながらキーボードの←→でも動くようにした。
・ブロックを2段表示表示
・バーの端っこに当てると中央で反射させるより斜めに飛びます。

<仕様>
・ブロックが3つ同時に消滅することがある。
・横からボールがブロックに当たったとき、X軸方向(横方向)に反射せずY軸方向(縦方向)に反射する。
・2つ重なったブロックに横からボールが当たると、Y軸方向への移動を2回行うため、貫通したような動作になる

横からの判定をするためにballReflect(lyr)関数(引数はブロックレイヤー)を
//ボールを反射させる
function ballReflect(lyr) {
if( lyrGetTop(lyr) < bally || bally + 15 < lyrGetTop(lyr) + 15) {
//上下からぶつかった場合
speedy = -speedy;
}
if(ballx < lyrGetLeft(lyr) || lyrGetLeft(lyr)+31 < ballx + 15) {
//横からぶつかった場合
speedx = -speedx;
}
}

のように書くと横から当たった場合の判定ができるはず・・・・なのだが、ブロックの角に場合(「9-b.当たり判定をしてみましょう」にある図のようになった場合)、斜めに反射し、おかしくなるため、横からの判定はコメントアウトしております。
else ifif(ballx < lyrGetLeft(lyr) ||・・・・
と書くと、ぴったり横からぶつかった場合のみ横にボール反射します。
が、ボールの大きさとブロックのボールがぴったり同じなため、滅多に起きません。
ブロックを大きくするか、ブロックが2個以上重なっている場合・・・などと書く工夫が必要かも。
スポンサーサイト
コメント
コメント
バーの中央に当たった時に
speedx = -speedx;
を組み込んでくれると嬉しい
2012/08/02(木) 14:32:02 | URL | だんご #SODYGxKI [ 編集 ]
Re: タイトルなし
お返事遅れて申し訳ありません。
修正しました。
2012/09/10(月) 14:22:04 | URL | もろもろっこ #- [ 編集 ]
コメントの投稿
URL:
本文:
パスワード:
非公開コメント: 管理者にだけ表示を許可する
 
トラックバック
トラックバック URL
http://moromorocco.blog39.fc2.com/tb.php/276-e7e5811b
この記事にトラックバックする(FC2ブログユーザー)
トラックバック
上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。