【Unity】Unityで3D野球盤をつくろう日記 8日目:消したボールを初期位置に復活させる

投稿日:2017年1月2日
最終更新日:2019年1月19日

(日記のまとめページはこちら:https://wakky.tech/unity-baseball-game/

前回は、ボールが撃ち出されるまでの時間をタイマーで設定し、かなりバッティングはやりやすくなった。しかし、今のところ一回ボールを打ったらそれでゲームが終わってしまう。今回は消えたボールを復活させる処理を実装してみる。

 

消えたボールを復活させる

今後のつくりざまを思案した結果、壁にぶつかった瞬間にボールを復活させる仕様にすることに決めた。そうなると、Destroyを使うより、壁にぶつかった瞬間にBallの座標を移動させた方がスマートな気がする。というわけで、Destroyを使わず、transform.positionでBallが壁にぶつかった瞬間に座標をBallの初期位置(0,0,-5.8)に戻すようにDeleteBall.csを改造した。

https://gist.github.com/WakkyFree/be41a8d14b898377990249bfd3615047/b32f8eddda523f0557309d345c45c88ae74df3fe

ポイントだけ解説すると、transform.position = new Vector3(0, 0, -5.8f)のみだと、初期位置に戻っても速度が残ったままで、初期位置から勝手に動いてしまった。そこで、Rigidbodyを定義して

rig.velocity = Vector3.zero;
rig.angularVelocity = Vector3.zero;

を追加することで、座標移動すると同時に、ボールの速度をゼロにするようにした。これでボールをもとの位置に戻すことができた。次は、復活させたボールを再度撃ち出す処理を追加する予定。


投稿者: wakky

映画と旅行が大好きなエンジニア。お酒、ゲーム、読書も好き。

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください