Unityでアプリを作成していると、アプリ実行中にマウスでクリックしたところにいろいろなものを発生させる必要がある場合があると思います。
最近でもマウスクリック箇所に円を発生させる必要があることがありました。
なんとか作成できたのでここに備忘録として書き残しておきます。
1.マウスクリック箇所に円を発生させるコード例
以下がマウスをクックした時に円を発生させるコード例になります。
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.UI;
public class CircleGenerator : MonoBehaviour
{
GameObject circle;
// Update is called once per frame
void Update()
{
if(Input.GetMouseButtonDown(0)){
circle = Instantiate(circlePrefab) as GameObject; //circle生成
if(circle != null){
// Vector2でマウス位置座標を取得する
Vector2 position = Input.mousePosition;
// マウス位置座標をスクリーン座標からワールド座標に変換する
Vector2 screenToWorldPointPosition = Camera.main.ScreenToWorldPoint(position);
// ワールド座標に変換されたマウス座標を代入
circle.transform.position = screenToWorldPointPosition;
}
}
}
}
上の例は2次元アプリ用の内容です。
Update()の中の処理となっています。
if(Input.GetMouseButtonDown(0)){
の箇所でマウスがクリックされたかのチェックをしており、クリックされた場合に、
circle = Instantiate(circlePrefab) as GameObject; //circle生成
で円を生成しています。
Vector2 position = Input.mousePosition;
で、マウスの位置座標を取得しており、
Vector2 screenToWorldPointPosition = Camera.main.ScreenToWorldPoint(position);
で、マウス位置座標をスクリーン座標からワールド座標に変換しています。
最後に、その座標を、
circle.transform.position = screenToWorldPointPosition;
で、円の位置座標に設定しています。
以上が、マウスをクリックした箇所に円を発生させる手順になります。