Unity 通过鼠标移动和LineRenderer组件实现画线功能

在Unity中,使用LineRenderer组件可以在场景中绘制简单的线条,所以我们要实现通过鼠标移动来绘制线条的功能,可以使用LineRenderer组件实现。

要灵活进行绘制,那么就需要全程使用代码控制,包括线条的创建和基本属性设置,然后是线条的端点数的添加,具体代码可以这样编写:

using UnityEngine;

public class DrawLineOnMouseDrag : MonoBehaviour
{
    private LineRenderer lineRenderer;
    private bool isDrawing = false;

    void Start()
    {
        CreateNewLine();
    }

    void Update()
    {
        if (Input.GetMouseButtonUp(0))
        {
            isDrawing = false;
            CreateNewLine();
        }

        if (isDrawing && Input.GetMouseButton(0))
        {
            Vector3 mousePos = GetMouseWorldPosition();
            lineRenderer.positionCount++;
            lineRenderer.SetPosition(lineRenderer.positionCount - 1, mousePos);
        }

        if (Input.GetMouseButtonDown(0))
        {
            isDrawing = true;
        }
    }

    void CreateNewLine()
    {
        GameObject lineObject = new GameObject("Line");
        lineRenderer = lineObject.AddComponent<LineRenderer>();

        // 设置LineRenderer的基本属性
        lineRenderer.positionCount = 0;
        lineRenderer.material = new Material(Shader.Find("Sprites/Default"));
        lineRenderer.startColor = Color.red;
        lineRenderer.endColor = Color.blue;
        lineRenderer.startWidth = 0.1f;
        lineRenderer.endWidth = 0.1f;
    }

    Vector3 GetMouseWorldPosition()
    {
        Vector3 mousePos = Input.mousePosition;
        mousePos.z = -Camera.main.transform.position.z;
        return Camera.main.ScreenToWorldPoint(mousePos);
    }
}

把脚本放到场景中,运行起来:

Unity 通过鼠标移动和LineRenderer组件实现画线功能

相关推荐

最近更新

  1. TCP协议是安全的吗?

    2024-03-31 22:22:06       18 阅读
  2. 阿里云服务器执行yum,一直下载docker-ce-stable失败

    2024-03-31 22:22:06       19 阅读
  3. 【Python教程】压缩PDF文件大小

    2024-03-31 22:22:06       18 阅读
  4. 通过文章id递归查询所有评论(xml)

    2024-03-31 22:22:06       20 阅读

热门阅读

  1. stm32通过串口发送float数据的方法

    2024-03-31 22:22:06       14 阅读
  2. 求整数各个数位上的数字之和 C语言

    2024-03-31 22:22:06       15 阅读
  3. C++ //CCF-CSP计算机软件能力认证 201312-2 ISBN号码

    2024-03-31 22:22:06       16 阅读
  4. spring系列-动态注册bean

    2024-03-31 22:22:06       18 阅读
  5. 微微科技遇到的问题总结

    2024-03-31 22:22:06       18 阅读
  6. 设计模式之命令模式 ,Php高级编程

    2024-03-31 22:22:06       16 阅读
  7. 正则表达式

    2024-03-31 22:22:06       17 阅读
  8. Leetcode 232:用栈实现队列

    2024-03-31 22:22:06       17 阅读
  9. leetcode 55.跳跃游戏

    2024-03-31 22:22:06       18 阅读
  10. C#使用Stopwatch类来实现计时功能

    2024-03-31 22:22:06       16 阅读
  11. LEETCODE-DAY38

    2024-03-31 22:22:06       13 阅读