【Unity】タップした場所から玉を投げる処理を実装してみた

unity

物理パズルゲームに興味があり作ることにしました。

まずはボールを投げる処理を作ります。

タップした場所からボールが発射するようにしました。

玉には以下のスクリプトとRigidbodyをアタッチします。

using UnityEngine;

public class ballController : MonoBehaviour
{
    public void Shoot(Vector3 dir)
    {
        GetComponent<Rigidbody>().AddForce(dir);
    }
}

AddForceで玉を飛ばすための処理が書かれています。

玉はPrefab化しておきます。

次に画面がタッチされたら玉を生成する処理を書いていきます。

using UnityEngine;

public class ballGenerator : MonoBehaviour
{

    public GameObject BallPrefab;

    // Update is called once per frame
    void Update()
    {
        if (Input.GetMouseButtonDown(0))
        {
            GameObject ball = Instantiate(BallPrefab) as GameObject;

            Ray ray = Camera.main.ScreenPointToRay(Input.mousePosition);
            Vector3 worldDir = ray.direction;
            ball.GetComponent<ballController>().Shoot(
                worldDir.normalized * 2000);
        }
    }
}

適当な空オブジェクトを作成してスクリプトをアタッチします。

先ほど作成した玉のPrefabをインスペクタ上でセットします。

これで玉が投げられるようになりました。

参考

Unityの教科書 Unity 2020完全対応版 (2D&3Dスマートフォンゲーム入門講座) (日本語) 単行本(ソフトカバー) – 2020/8/29