ヘケケの模索生活

ゲーム関係のことを書いています。ストラテジーやシミュレーション系のゲームが好きなのでそういったゲームの記事が中心です。unityを使ったアプリ開発や一人海外旅行をした時のこともたまに書いたりします。

【Unity】マウスドラッグで線を描画する

Unity 2Dでマウスカーソルの部分に線を描画します。

こちらのサイトを参考にさせていただきました。

gomafrontier.com

 

空のオブジェクトに Add Componentで「LineRenderer」を追加し、

下記のC#スクリプトをアタッチすることで動きます。

 

using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class NewBehaviourScript : MonoBehaviour
{
    LineRenderer renderer;
    Vector3 startPos;
    Vector3 pos;
    List rendererPositions = new List();

    void Start()
    {
        renderer = gameObject.GetComponent();
        // 線の幅
        renderer.startWidth = 0.1f;
        renderer.endWidth = 0.1f;
        //色
        Color colorStrat;
        ColorUtility.TryParseHtmlString("#" + "FF0000", out colorStrat);
        renderer.startColor = colorStrat;
        Color colorEnd;
        ColorUtility.TryParseHtmlString("#" + "FF0000", out colorEnd);
        renderer.endColor = colorEnd;
    }

    void Update()
    {
        if (Input.GetMouseButtonDown(0))
        {
            //タッチ位置取得
            Vector3 cameraPosition = Input.mousePosition;
            cameraPosition.z = 10.0f;
            startPos = Camera.main.ScreenToWorldPoint(cameraPosition);

            //ラインの起点設定
            renderer.SetPosition(0, startPos);
        }
        else if (Input.GetMouseButton(0))
        {
            //タッチ位置取得
            Vector3 cameraPosition = Input.mousePosition;
            cameraPosition.z = 10.0f;
            pos = Camera.main.ScreenToWorldPoint(cameraPosition);
        }
        else if (Input.GetMouseButtonUp(0))
        {
            renderer.positionCount = 0;
            rendererPositions.Clear();
        }
        // ラインレンダラーに座標を設定し線を描画
        if (!rendererPositions.Contains(pos))
        {
            rendererPositions.Add(pos);
            renderer.positionCount = rendererPositions.Count;
            renderer.SetPosition(renderer.positionCount - 1, pos);
        }
    }
}

 線の幅や色の部分を変更することで、だんだん太くなる線や色をグラデーションにすることも可能なようです。