クリックで生成したプレハブに力を加えて、前方へ飛ばしてみましょう。
クリックした場所から、ボールが前へ飛んでいきます。
関連記事:
静止中のオブジェクトをクリックで飛ばす
クリックした場所からボールを発射する
クリックした位置にオブジェクトを生成(Ray)
定位置からボールを発射させるしくみ
連射防止のしくみ
ターゲットに向かってボールをぶつける
移動と発射・MainCamera追従を組合わせる
キャラクターコントローラーに発射機能
前後左右へ順番にボール発射
Prefabに追加するスクリプト
Sphereを作成して、カラーをつけました。
リジッドボディを追加します。
SphereMove.csを作成して追加します。
SphereMove.csを書きましょう。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 |
using System.Collections; using System.Collections.Generic; using UnityEngine; public class SphereMove : MonoBehaviour { public float force = 10.0f; public Rigidbody rb; void Start() { rb = GetComponent<Rigidbody>(); rb.AddForce(0, 0, force, ForceMode.Impulse); } } |
Z方向に向けて力を加えています。
ForceModeは力のタイプということで、ここではImpulseを入れています。
Impulseは質量を使用して、RigidBodyに瞬発的な速度変化を追加します。
プレイして、Sphereが前に押し出されることを確認しましょう。
動きは確認できたので、今度はSphereをプレハブ化します。
Sphereの元データを消します。
クリックした場所に生成
クリックでプレハブ生成できるように、スクリプトを作成しましょう。
空のオブジェクトを作成。
ClickSphere.csを作成して、GameObject(空のオブジェクト)に追加。
ClickSphere.csを記述します。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 |
using System.Collections; using System.Collections.Generic; using UnityEngine; public class ClickSphere : MonoBehaviour { public GameObject prefab; private Vector3 mousePosition; void Update() { if (Input.GetMouseButtonDown(0)) { mousePosition = Input.mousePosition; mousePosition.z = 10.0f; Instantiate(prefab, Camera.main.ScreenToWorldPoint(mousePosition),Quaternion.identity); } } } |
プレハブのフィールドができるので、ここにSphereのプレハブデータをドラッグ&ドロップしましょう。
ゲームプレイして動きを確認します。
関連記事:
静止中のオブジェクトをクリックで飛ばす
クリックした場所からボールを発射する
クリックした位置にオブジェクトを生成(Ray)
定位置からボールを発射させるしくみ
連射防止のしくみ
ターゲットに向かってボールをぶつける
移動と発射・MainCamera追従を組合わせる
キャラクターコントローラーに発射機能
前後左右へ順番にボール発射