ezyslice 切割学习代码 笔记

using UnityEngine;

public class MouseTrack : MonoBehaviour

{

    public LineRenderer lineRenderer;

    private Vector3[] mouseTrackPositions = new Vector3[10];

    private Vector3 headPosition;

    private Vector3 lastPosition;

    private int positionCount = 0;

    [Header("设置多远举例记录一个位置")]

    public float distanceOfPositions = 0.01f;

    private bool firstMouseDown = false;

    private bool mouseDown = false;

    // Use this for initialization

    void Start()

    {

    }

    // Update is called once per frame

    void Update()

    {

        if (Input.GetMouseButtonDown(0))

        {

            firstMouseDown = true;

            mouseDown = true;

        }

        if (Input.GetMouseButtonUp(0))

        {

            mouseDown = false;

        }

        OnDrawLine();

        firstMouseDown = false;

    }

    private void OnDrawLine()

    {

        if (firstMouseDown == true)

        {

            positionCount = 0;

            headPosition = Camera.main.ScreenToWorldPoint(Input.mousePosition + Camera.main.transform.forward * 0);

            lastPosition = headPosition;

        }

        if (mouseDown == true)

        {

            headPosition = Camera.main.ScreenToWorldPoint(Input.mousePosition + new Vector3(0, 0, 10));

            if (Vector3.Distance(headPosition, lastPosition) > distanceOfPositions)

            {

                SavePosition(headPosition);

                positionCount++;

            }

            lastPosition = headPosition;

        }

        else

        {

            mouseTrackPositions = new Vector3[10];

        }

        SetLineRendererPosition(mouseTrackPositions);

    }

    private void SavePosition(Vector3 pos)

    {

        pos.z = 0;

        if (positionCount <= 9)

        {

            for (int i = positionCount; i < 10; i++)

            {

                mouseTrackPositions[i] = pos;

            }

        }

        else

        {

            for (int i = 0; i < 9; i++)

            {

                mouseTrackPositions[i] = mouseTrackPositions[i + 1];

            }

            mouseTrackPositions[9] = pos;

        }

    }

    private void SetLineRendererPosition(Vector3[] positions)

    {

        lineRenderer.SetPositions(positions);

    }

}

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • using System.Collections; using System.Collections.Generi...
    Unity夜神阅读 352评论 0 0
  • 如果说人生是一场拔河比赛,无论红绳在哪边,都是精彩。如果说生命是一场马拉松,走好脚下的每一步,才有意义。那么有人问...
    水果家族阅读 222评论 0 0
  • 文/安心 今天,儿童节。 一年一度,如期而至。 ...
    芮安88阅读 424评论 0 1
  • 夜景黑色调/作 丹枫散秋寒,叶落玉冰霜。 听雨忆柔情,雨雾两茫茫。 纤手红颜妆,玉钗青鬓香。 黄鹤故人游,淡月西湖楼。
    夜景黑色调阅读 198评论 0 0

友情链接更多精彩内容