/****************************************************
文件:RectRenderController.cs
作者:Edision
邮箱: 424054763@qq.com
日期:#CreateTime#
功能:框选控制
*****************************************************/
using UnityEngine;
public class RectRenderController : MonoBehaviour
{
/// <summary>
/// 鼠标左键是否按下
/// </summary>
private bool isMouseDown;
/// <summary>
/// 画线工具
/// </summary>
private LineRenderer lineRenderer;
/// <summary>
/// 框的起始点,即按下鼠标左键时指针的位置
/// </summary>
private Vector3 startPoint;
/// <summary>
/// 在拖移过程中,玩家鼠标指针所在的实时位置
/// </summary>
private Vector3 currentPoint;
/// <summary>
/// 框的终止点,即放开鼠标左键时指针的位置
/// </summary>
private Vector3 endPoint;
private void Awake()
{
isMouseDown = false;
lineRenderer = GetComponent<LineRenderer>();
if (lineRenderer==null)
{
lineRenderer = this.gameObject.AddComponent<LineRenderer>();
}
lineRenderer.loop = true;
lineRenderer.useWorldSpace = true;
lineRenderer.SetWidth(0.01f, 0.01f);
}
private void Update()
{
if (Input.GetMouseButtonDown(0))
{
startPoint = Input.mousePosition;
isMouseDown = true;
}
else if (Input.GetMouseButtonUp(0))
{
isMouseDown = false;
lineRenderer.positionCount = 0;
endPoint = Input.mousePosition;
}
RectRender();
}
private float temp_Z = 5f;
private Vector3 temp_RightUpPos;
private Vector3 temp_LeftDownPos;
/// <summary>
/// 框选绘制
/// </summary>
private void RectRender()
{
if (isMouseDown)
{
currentPoint = Input.mousePosition;
startPoint.z = temp_Z;
currentPoint.z = temp_Z;
SetV3(ref temp_RightUpPos, currentPoint.x, startPoint.y, temp_Z);
SetV3(ref temp_LeftDownPos, startPoint.x, currentPoint.y, temp_Z);
lineRenderer.positionCount = 4;
lineRenderer.SetPosition(0, Camera.main.ScreenToWorldPoint(startPoint));
lineRenderer.SetPosition(1, Camera.main.ScreenToWorldPoint(temp_RightUpPos));
lineRenderer.SetPosition(2, Camera.main.ScreenToWorldPoint(currentPoint));
lineRenderer.SetPosition(3, Camera.main.ScreenToWorldPoint(temp_LeftDownPos));
}
}
private void SetV3(ref Vector3 v3, float x, float y, float z)
{
v3.x = x;
v3.y = y;
v3.z = z;
}
private void OnDestroy()
{
isMouseDown = false;
}
}
unity 框选
最新推荐文章于 2023-12-22 00:34:03 发布