きどレイの人間生活

コンピュータ寄りな人間生活をする大学生のブログ

Unity制作日記2(ボール・バーを動かす)

Unityで制作しているブロック崩しの進捗報告。
ボールとバーの動作を実装しました。
ちなみに2Dで制作しています。

ボールの動き

ブロック崩しのボールの動きは、バーと壁にぶつかったときに跳ね返るというものにしなければならない。
まず、ボールに当たり判定と物理挙動を付けるために『Circle Collider 2D』と『Rigidbody2D』をボールに追加。
バーの方は当たり判定だけでいいので『Box Collider 2D』を追加。
これでボールとバーの間で当たり判定が行われる。

ボールは常に同じスピードで動き、跳ね返らないといけない。
なら、Rigidbody2DのGravityの値を0にして、スクリプトでボールに力を加えてやればいいのでは。

そう思ったのだが跳ね返らない・・・
なぜだ・・・

f:id:KidoLei:20180129211336g:plain:w300


調べてみると、Physic Materialというので弾性を個別に設定しないといけないらしい。
ぶつかったときと同じ力で跳ね返らせるために、Physic MaterialのBounciness(弾性)を1(100%)にする。


これでボールが跳ね返るようになった。
f:id:KidoLei:20180129224410g:plain:w300

バーの動き

バーの動きは、横の動きをマウスと同期させることで動かすことにする。
スクリプトでバーのx座標にマウスのx座標を代入すればよいのでは。

そう思ったのだが上手くいかない・・・
なぜだ・・・

これの原因は、マウスの位置座標を取得するInput.mousePositionがスクリーン座標で、バーの座標を指定するtransform.positionはワールド座標になっていたからだった。
これはスクリーン座標からワールド座標に変換するCamera.main.ScreenToWorldPointで解決した。
f:id:KidoLei:20180129220502g:plain:w300




次はボールがブロックに当たるとブロックが消滅する機能を実装しようと思います。