(日記のまとめページはこちら:https://wakky.tech/unity-baseball-game/)
前回は、ボールが撃ち出されるまでの時間をタイマーで設定し、かなりバッティングはやりやすくなった。しかし、今のところ一回ボールを打ったらそれでゲームが終わってしまう。今回は消えたボールを復活させる処理を実装してみる。
消えたボールを復活させる
今後のつくりざまを思案した結果、壁にぶつかった瞬間にボールを復活させる仕様にすることに決めた。そうなると、Destroyを使うより、壁にぶつかった瞬間にBallの座標を移動させた方がスマートな気がする。というわけで、Destroyを使わず、transform.positionでBallが壁にぶつかった瞬間に座標をBallの初期位置(0,0,-5.8)に戻すようにDeleteBall.csを改造した。
ポイントだけ解説すると、transform.position = new Vector3(0, 0, -5.8f)のみだと、初期位置に戻っても速度が残ったままで、初期位置から勝手に動いてしまった。そこで、Rigidbodyを定義して
rig.velocity = Vector3.zero;
rig.angularVelocity = Vector3.zero;
を追加することで、座標移動すると同時に、ボールの速度をゼロにするようにした。これでボールをもとの位置に戻すことができた。次は、復活させたボールを再度撃ち出す処理を追加する予定。