この記事はこちらの記事の続きとなっています。
もし未読でしたら先に目を通していただけると嬉しいです。。
ボールを動かす
Ball にはすでに
- Rigidbpdy
- PhysicMaterial
を適用してありますので、あとはスタート時にプログラムで力を加えて押し出すだけです。
C#の基本は色々な記事や書籍等で学べますのでここでは省略。
Ball のC#スクリプトを記述する
新規スクリプトを用意します。
- プロジェクトウインドウ内を右クリック
- 「作成」を選択
- 「C#スクリプト」を選択
新たなスクリプトが作成されるので適当に名前を付けます。
ここでは「Ball」としました。
作成したBallスクリプトをダブルクリック。
テキストエディタでスクリプトが開かれます。
エディタは色々ありますが、「Microsoft Visual Studio」が良いと思います。
- Start
- Update
の2つがすでに記述されています。
ここでは「Start」には一度だけ実行する命令、「Update」には何度でも繰り返す命令を記述する・・という理解で大丈夫かと思います。
今回は Ball に一度だけ力を加えるので Start を使用。
まず Rigidbody に命令を出せる状態にして、 次に AddFoce で斜め下に向けて力を加えます。
こんな感じに Start の中に記述しました。
Vector3の値(100,-100,0)は
- X方向に100
- Y方向に-100
の力で押し出す・・という事です。
数値自体は力の大きさを表していますので、調整をして良い感じに設定をして下さい。
Ball にC#スクリプトを適用する
C#スクリプトは記述が出来たら対象のオブジェクトに適用しないといけません。
- BallスクリプトをBallオブジェクトにドラッグ&ドロップ
- Ball のインスペクターにスクリプトが追加される
ここで動きをチェックしてみて、Ball が斜め下に向かって動き出せば成功。
ボールがブロックに当たったらブロックを消す
引き続き Ball にスクリプトを加えます。
準備として Block に Tag をつけてあるのでそれを利用。
Ball スクリプトを再び開きます。
先ほどは Start を使用しましたが、今回は使いません。
・・・かといって Update も使わず・・。
今回は OnCollisionEnter を使用してBall が Block に当たった処理を作成します。
Ball が何かに当たると OnCollisionEnter が処理を開始。
何に当たったかを取得し、もし”Blocks”Tag が付いたオブジェクトだったら消します。
記述してみました。
OnCollisionEnter で得たオブジェクト情報は CompareTag で Tag が”Blocks”かどうか調べます。
もし Tag が “Blocks”だったら消去。
違ったら何もしない・・となります。
スクリプトを追加したら忘れずにセーブ。
動きを確認して Block が消去されたら成功です。
バーを動かす
左右キーを押すことでバーを動かしても良いですが、今回はマウスで操作する形にします。
Bar のC#スクリプトを記述する
新規スクリプトを用意してテキストエディタで開きます。
名前は「Bar」としました。
バーの動きは
- マウスの位置にバーが付いてくる
- 左右の動きのみで縦方向には動かない
- 左右の範囲は左右の壁までに制限する
こんな感じです。
マウスの動きをゲーム画面に反映させますので、PC上のマウスカーソルの座標を取得する必要があります。
そして取得した数値をマウスの位置情報として使いますが、そのままの数値ではゲーム画面からはみでたりしそうです。
そこでPC上のマウスカーソルの数値をゲーム画面の数値に変換して使用。
その際、Yの値は固定。
Xの値は左右を制限する、とします。
今回は何度も命令を繰り返すので Update 内に記述。
mousePosition でPC画面のマウスカーソルの座標を取得。
ScreenToWorldPoint で取得したマウスカーソルの座標をゲーム画面の座標に変換します。
変換した座標をそれぞれいじります。
xの値は Mathf.Clamp で左右を制限。-7.7~7.7が入ってますが、これは見た目で決めています。
yは上下に動かないように固定。
zはそのまま。
いじった座標を transform に送ってバーを動かします。
スクリプトが完成したらBar に適用するのを忘れないで下さい。
再生してバーがマウスについてくれば成功です。
まとめ
計画通りの動きが出来たと思います。
これをベースにゲーム性を追加していけばゲームとして遊べるものになるはず。
コードを書くのは慣れていないので
- つづりのミス
- 構文のミス
が結構な頻度で出ました。
文法は合ってるはずなのに何故か・・・という時は大抵ちょっとしたミスがほとんど。
そういう点では、もっとUnity自体に慣れる必要を感じます。
ただ、この記事のためにC#を組みましたが思った通りに動いて感動。
ゲームエンジンってスゴイですね。
この記事はここまで。
またリンク元の記事へ戻っていただけると嬉しいですね。
コメント