Help us understand the problem. What is going on with this article?

【Unity】画面をタッチした位置からオブジェクトを作って投げるアクションを実装する

やりたいこと

クリックした位置にオブジェクトを作って、さらに作ったオブジェクトを投げたい。
Ball.gif
実装するとこのように動きます。
投げる強さを工夫すればFPSのような銃弾を放つ動きや、野球ゲームでボール投げるような動きも実装できそうですね。
今回はC#でスクリプトを書きます。

C#スクリプトを書こう

ここではBallGenerator.csという名前でスクリプトを作りました。

BallGenerator.cs
using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class BallGenerator : MonoBehaviour {

    public GameObject RedBallPrefab; 
    private Vector3 clickPosition;

    void Start () {
    }

    // Update is called once per frame
    void Update () {

        if (Input.GetMouseButtonDown (0)) {

            clickPosition = Input.mousePosition;

            //今のままではクリックした場所(手前)にボールが落ちてしまうので奥の方向(Z軸側)にPrefabのインスタンスを作る位置をズラす
            clickPosition.z = 10f;

            GameObject RedBall = Instantiate(RedBallPrefab, Camera.main.ScreenToWorldPoint(clickPosition), RedBallPrefab.transform.rotation);

            RedBall.GetComponent<Rigidbody> ().AddForce (new Vector3 (0, 100, 100));
        }

    }
}

もしこんな感じにオブジェクトを勢いよく投げたいのであれば
BallCast.gif

//作ったインスタンスに力をかけて投げたような動きにする
RedBall.GetComponent<Rigidbody> ().AddForce (new Vector3 (0, 100, 100));

この部分を変えて加える力を増やしましょう。

スクリプトをアタッチしよう

スクリプトは何かしらのオブジェクトにアタッチしないと動かないのでヒエラルキービューで空のオブジェクトを作りまししょう。
Creat.gif
GIFでは間に合わなかったのですが、作ったオブジェクトの名前は BallGenerator にしました。

Projectビューにある先ほど作ったスクリプトをBallGeneratorにドラッグ&ドロップしてアタッチができたら、スクリプト内のpublicで宣言していた RedBallPrefab に用意しておいたPrefabを入れるのを忘れないようにしましょう。
gif.gif

まとめ

これで画面をタッチした場所から物を投げる動きが実装できましたね。
お疲れ様でした!

何か間違いがあればご指摘お願いします。
それでは素敵なUnityライフを〜

参考資料

先人たちのありがたい教えです。
* https://gist.github.com/Buravo46/8018394
* https://qiita.com/shiimaxx/items/4fbec07885eb5a5563e9
こちらも合わせて読むと理想の動きを実装できるかもしれません。

Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
Comments
No comments
Sign up for free and join this conversation.
If you already have a Qiita account
Why do not you register as a user and use Qiita more conveniently?
You need to log in to use this function. Qiita can be used more conveniently after logging in.
You seem to be reading articles frequently this month. Qiita can be used more conveniently after logging in.
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
ユーザーは見つかりませんでした