スポンサーサイト

-------- --:--

上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。
大まかな流れは決めたので細かい処理を考えて行く
まずボールの座標と移動量を確保

var ballx; // ボールのX(左)座標
var bally; // ボールのY(上)座標
var speedx; // ボールのX(左右)速度
var speedy; // ボールのY(上下)速度


壁に当たったときボールが反射するようにしたいので
ballxが指定の座標を超えようとしたとき、speedxにマイナスをかける
つまりこれで右方向に向かっていたボールは左方向へ
左方向に向かっていたボールは右方向へ向かう

if(120 >= ballx){
speedx = -speedx;
ballx=120;
}
if(720 <= ballx) {
speedx = -speedx;
ballx=720;
}


このあたりはさくさく進めることができたが
少し迷ったのはラケットとボールの当たり判定

左端で当たったときと中央で当たったとき、右端で当たったときのボールの反射が全て同じだとあんまり良くない
何度打ち返してもボールの軌道が同じになるから

ちょっと上手い計算方法が思いつかないので
とりあえず今は左端に当たったときは左に、右端に当たったときは右に反射するようにしておいた
ラケットのサイズは60なので真ん中30の地点からどれだけ離れているかで判定している

かつ、またはの表記がよく分からなかったので
即興でこんな感じに

if( bally >= rtakasa) { //ラケットとボールのy座標が重なっているか
flaga=1;
}
if(racketx <= ballx && racketx+60 >= ballx){//x座標が重なっているか
flagb=1;
}

if(flaga+flagb==2){
flaga=0;
flagb=0;
speedx = (ballx-(racketx+30))/4;
speedy = -speedy;
}



一日目はここまでで終了
明日はブロックの配置と当たり判定・・・まで作れるといいな
http://uchiharin.web.fc2.com/burokku2.html
スポンサーサイト

コメントの投稿

管理者にだけ表示を許可する

上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。