Unity实现鼠标画画的功能

在unity里面实现一个功能,通过按下鼠标左键开始在平面上画画,松开鼠标左键结束画画

using UnityEngine;

public class Drawing : MonoBehaviour
{
    private LineRenderer lineRenderer; // 线渲染器
    private int vertexCount = 0; // 顶点数计数器
    private bool mouseDown = false; // 鼠标状态标记

    void Start()
    {
        lineRenderer = GetComponent<LineRenderer>(); // 获取组件
        lineRenderer.positionCount = 0; // 初始化顶点数
        lineRenderer.material.color = Color.black; // 设置线颜色
    }

    void Update()
    {
        if (Input.GetMouseButtonDown(0)) // 检测鼠标左键是否按下
        {
            lineRenderer.positionCount = 0; // 重置顶点数
            vertexCount = 0; // 重置顶点计数器
            mouseDown = true; // 标记鼠标按下
        }

        if (Input.GetMouseButtonUp(0)) // 检测鼠标左键是否松开
        {
            mouseDown = false; // 标记鼠标松开
        }

        if (mouseDown) // 检测鼠标状态
        {
            // 将鼠标的世界坐标投影到平面上
            Vector3 pos = new Vector3(Input.mousePosition.x, Input.mousePosition.y, 10f);
            pos = Camera.main.ScreenToWorldPoint(pos);

            // 添加一个新的顶点
            lineRenderer.positionCount = vertexCount + 1;
            lineRenderer.SetPosition(vertexCount, pos);
            vertexCount++;
        }
    }
}

使用方法:

将该脚本添加到游戏对象上。
确保该游戏对象上有 Line Renderer 组件,并设置好材质和线宽等参数。
运行游戏,在场景视图中按下鼠标左键并拖动即可进行画画,松开鼠标左键则结束画画。

  • 3
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论
要在 Unity实现鼠标拖动图片,可以按照以下步骤进行操作: 1. 创建一个空对象,并将图片作为其子对象添加到场景中。 2. 为图片添加一个“RectTransform”组件,并将其“Anchor Presets”设置为左上角(0, 1)。 3. 为图片添加“Event Trigger”组件,并添加“Pointer Down”和“Pointer Up”事件。 4. 创建一个脚本,将其添加到图片上,并实现以下代码: ``` using UnityEngine; using UnityEngine.EventSystems; public class DragImage : MonoBehaviour, IPointerDownHandler, IPointerUpHandler, IDragHandler { private Vector2 pointerOffset; private RectTransform canvasRectTransform; private RectTransform imageRectTransform; private void Awake() { canvasRectTransform = transform.parent.GetComponent<RectTransform>(); imageRectTransform = GetComponent<RectTransform>(); } public void OnPointerDown(PointerEventData eventData) { pointerOffset = GetPointerOffset(eventData); } public void OnPointerUp(PointerEventData eventData) { imageRectTransform.anchoredPosition += GetPointerOffset(eventData); } public void OnDrag(PointerEventData eventData) { imageRectTransform.anchoredPosition = GetPointerOffset(eventData) - pointerOffset; } private Vector2 GetPointerOffset(PointerEventData eventData) { Vector2 localPointerPosition; if (RectTransformUtility.ScreenPointToLocalPointInRectangle(canvasRectTransform, eventData.position, eventData.pressEventCamera, out localPointerPosition)) { return localPointerPosition - imageRectTransform.anchoredPosition; } return Vector2.zero; } } ``` 5. 在场景中运行游戏,并拖动图片。 这样,就可以实现鼠标拖动图片的功能了。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

ToDoNothing

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值