ゲームのスタートと同時にボールを打ち出すのではなく、画面上の打ち出したい位置をクリックして、その方向に向かってボールを打ち出す処理を考えます。
マウスやタップを検知する方法はいくつかありますが、検知しただけでは「どの位置」をタップしたかまではわかりません。
そこで今回はカメラの持つ機能を利用して、タップした位置情報をゲーム画面の座標に変換して利用することにします。
タップの検知にはRay(見えない光線)機能を利用します。画面をタップすることでこの光線を画面の奥方向に向かって発射します。
その際、発射したRayがいずれかのゲームオブジェクトのコライダーに当たった場合に、当たった位置情報を取得して、
ボールの位置を『始点』、Rayが当たった位置を『終点』としたベクトルを取得し、利用する設計になっています。
ただしこのまま取得したベクトルを利用してしまうと、Rayが当たった位置(終点)によってベクトルの大きさが変わってくるため、
それに合わせて発射速度が速くなったり、遅くなったりしてしまいます。
そこで取得したベクトルを正規化する(ベクトルの大きさを1にする)ことによって、
クリックした距離に関わらずボールの発射速度を一定にして発射するようにしています。(Playerが移動しても正常に機能します)
ボールに近い部分をクリック(Player移動後)
https://gyazo.com/90188552f088b6a4c4e3017ed4e992dd
ボールに近い部分をクリック
https://gyazo.com/1e7f46867d30afe92499ad33c2646bb6
ボールに遠い部分をクリック
https://gyazo.com/745fbd03cd85bc529214d19a7dcdb16b
これらの動画を観比べて頂けると、クリック位置に関わらず、ボールの発射速度が変化していないことが確認できると思います。