Game制作入門 day4

Unity Pathway リアルタイム 3D の基礎

learn.unity.com

なんだか知らないけど、急に日本語になったので捗る。次のコースを実施

  • 3D シーンでゲームオブジェクトを使って作業する
  • プリミティブで建物を作成する

建物を作った

ブロック崩しのタイトル画面を作る (+シーンの移動)

新しいシーンを作り、文字とボタンを表示した。空のゲームオブジェクトにC#スクリプトを追加し、GameStart関数を置いた。あとはボタンのクリックイベントでこの関数を呼び出してシーンを切り替えた。

public void GameStart()
{
    SceneManager.LoadScene("SampleScene");
}

なんとなくシーン切り替えってもっといい方法あるんじゃないかって気はしつつ今はまだその辺知らないのでこれはこれでという感じだ。

シーンが2つになったので、ビルドセッティングにシーンを追加し、タイトル画面のオーダーを上に持ってきた。これで起動時にタイトル画面が出るようになった。

ちょっとずつだが、なんとなくこうしたら動くかな、といったことのイメージが湧くようになってきた。しかしその方法がベストプラクティスなのかでいうと多分違うんだろうな~と感じるので、まだまだなにかを作り込むのはやめておいたほうがよさそうだ。

2Dの物理演算そのままではボールが適切に跳ね返らない

ボールが壁に張り付く

現在はボールを無重力にして、最初に一定の力で打ち出してそれっきりにしている。そうすると壁やブロックなどに当たった時に、Physics Material 2Dのデフォルトのなにかで跳ね返りが計算されているようで、壁に対してボールが水平になってしまったりする。こうなるとどのように自機で跳ね返しても復帰ができない。

なんとなくOnCollisionEnter2D関数当たりでなにか工夫が必要なのだろうけど、壁側でやるといいのかボール側でやるといいのか悩ましい。おそらくボール側が適切そうだ。ボール側で状態を管理すれば、例えば反射した回数をカウントしてスピードを上げるといったこともできるので、できるだけボールの制御はボールが持つスクリプトでやるのが良い気がする。