Unityでアプリを作成していると、アプリ実行中にマウスでクリックしたところにいろいろなものを発生させる必要がある場合があると思います。
マウスクリック箇所に円を発生させる内容については前回説明しました。
ここでは、発生させた円をマウスをクリックしている間だんだん大きくするような内容を載せておきたいと思います。
以下がその内容になります。
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;
}
}
if(Input.GetMouseButton(0)){
if(circle != null){
Vector2 workScale; //①仮の変数宣言
workScale = circle.transform.localScale; //◆現在の大きさを代入
workScale.x = workScale.x + 0.08f; //②変数のx側の大きさを0.08増やして代入
workScale.y = workScale.y + 0.08f; //②変数のy側の大きさを0.08増やして代入
circle.transform.localScale = workScale; //③大きさに変数workScaleを代入
}
}
}
}
上の例は2次元アプリ用の内容です。
前半は前回の記事でも説明した内容です。
Update()の中の処理となっています。
if(Input.GetMouseButtonDown(0)){
の箇所でマウスがクリックされたかのチェックをしています。
GetMouseButtonDown(0)は左クリックされた時(マウスを押した瞬間)を表しています。
クリックされた場合に、
circle = Instantiate(circlePrefab) as GameObject; //circle生成
で円を生成しています。
Vector2 position = Input.mousePosition;
で、マウスの位置座標を取得しており、
Vector2 screenToWorldPointPosition = Camera.main.ScreenToWorldPoint(position);
で、マウス位置座標をスクリーン座標からワールド座標に変換しています。
最後に、その座標を、
circle.transform.position = screenToWorldPointPosition;
で、円の位置座標に設定しています。
ここから先、
if(Input.GetMouseButton(0)){
以降が今回追加した箇所です。
GetMouseButton(0)は左クリックを押している間trueになります。
workScale = circle.transform.localScale;
で、現在の大きさを一旦workScaleに代入し、そのworkScaleのx,yの大きさを少しずつ増やしてworkScale に再度代入しています。
最後に、
circle.transform.localScale = workScale;
【Unity】マウスをクリックした箇所に円を発生させた後にマウスクリックに連れて円がだんだん大きくなるようにする処理の手順で、workScaleをcircle.transform.localScaleを代入して結果的に大きさを大きくしています。
以上が、マウスをクリックした箇所に円を発生させた後にマウスクリックに連れて円がだんだん大きくなるようにする手順になります。