欧美大屁股bbbbxxxx,狼人大香伊蕉国产www亚洲,男ji大巴进入女人的视频小说,男人把ji大巴放进女人免费视频,免费情侣作爱视频

歡迎來(lái)到入門(mén)教程網(wǎng)!

C#教程

當(dāng)前位置:主頁(yè) > 軟件編程 > C#教程 >

Unity使用LineRender斷筆寫(xiě)字

來(lái)源:本站原創(chuàng)|時(shí)間:2020-01-10|欄目:C#教程|點(diǎn)擊: 次

做多媒體項(xiàng)目時(shí),經(jīng)常會(huì)最后來(lái)個(gè)客戶(hù)簽名并保存之類(lèi)的,簽名保存之前的博客Unity3d截圖方法合集有介紹過(guò)了,今天閑著把斷筆寫(xiě)字的也貼出來(lái)吧,以前用leap motion時(shí)嘗試用 leap motion演示中的食指寫(xiě)字,當(dāng)時(shí)的寫(xiě)字其實(shí)只能一筆畫(huà),說(shuō)白了其實(shí)就是個(gè)壽命無(wú)限長(zhǎng)的拖尾,雖然效果不太好,但是很流暢,嘗試過(guò)用leap motion斷筆寫(xiě)字,但是效果不好,很容易誤寫(xiě),然后就產(chǎn)生了此方法,就是鼠標(biāo)或者觸摸屏寫(xiě)字了。

講一下思路,就是不斷的將鼠標(biāo)的屏幕坐標(biāo)轉(zhuǎn)換成世界坐標(biāo),然后用LineRender持續(xù)畫(huà)線(xiàn),添加到隊(duì)列中,這樣做的好處是可持續(xù)撤銷(xiāo)誤寫(xiě)的筆畫(huà),知道全部撤銷(xiāo),重新寫(xiě)。

來(lái)來(lái)來(lái),鄙人寫(xiě)字很丑,不許笑,先上圖:

下面言歸正傳,這個(gè)做起來(lái)比較簡(jiǎn)單,一個(gè)腳本就能實(shí)現(xiàn)了

工程目錄圖如下:

只有一個(gè)腳本,一個(gè)材質(zhì),一個(gè)場(chǎng)景就可以了

場(chǎng)景中新建一個(gè)lineRender和write物體,write物體掛上DrawLine腳本。

下面重點(diǎn)來(lái)了,主要就是這個(gè)腳本:

using UnityEngine;
using System.Collections;
using System.Collections.Generic;
 
public class DrawLine : MonoBehaviour
{
  //線(xiàn)段預(yù)制
  [Tooltip("Line renderer used for the line drawing.")]
  public LineRenderer linePrefab;
 
  //線(xiàn)段相關(guān)保存和下標(biāo)
  private List<GameObject> linesDrawn = new List<GameObject>();
  private LineRenderer currentLine;
  private int lineVertexIndex = 2;
 
  void Update()
  {
    //刪除最近一筆
    if (Input.GetKeyDown(KeyCode.U))
    {
      // U-key means Undo
      DeleteLastLine();
    }
 
    if (currentLine == null &&
      Input.GetMouseButton(0))
    {
      // 鼠標(biāo)按下,開(kāi)始畫(huà)線(xiàn)
      currentLine = Instantiate(linePrefab).GetComponent<LineRenderer>();
      currentLine.name = "Line" + linesDrawn.Count;
      currentLine.transform.parent = transform;
 
      Vector3 cursorPos = Input.mousePosition;
      cursorPos.z = 0f;
 
      //將鼠標(biāo)按下的屏幕坐標(biāo)轉(zhuǎn)換成世界坐標(biāo)
      Vector3 cursorSpacePos = Camera.main.ScreenToWorldPoint(cursorPos);
      cursorSpacePos.z = 0f;
      currentLine.SetPosition(0, cursorSpacePos);
      currentLine.SetPosition(1, cursorSpacePos);
 
      lineVertexIndex = 2;
      linesDrawn.Add(currentLine.gameObject);
 
      StartCoroutine(DrawLines());
    }
 
    if (currentLine != null &&
      Input.GetMouseButtonUp(0))
    {
      // 鼠標(biāo)左鍵抬起結(jié)束當(dāng)前筆畫(huà)
      currentLine = null;
    }
  }
 
  //撤銷(xiāo)最后一筆
  public void DeleteLastLine()
  {
    if (linesDrawn.Count > 0)
    {
      GameObject goLastLine = linesDrawn[linesDrawn.Count - 1];
      linesDrawn.RemoveAt(linesDrawn.Count - 1);
      Destroy(goLastLine);
    }
  }
 
  //持續(xù)畫(huà)線(xiàn)
  IEnumerator DrawLines()
  {
    while (Input.GetMouseButton(0))
    {
      yield return new WaitForEndOfFrame();
 
      if (currentLine != null)
      {
        lineVertexIndex++;
        currentLine.SetVertexCount(lineVertexIndex);
 
        Vector3 cursorPos = Input.mousePosition;
        cursorPos.z = 0f;
 
        Vector3 cursorSpacePos = Camera.main.ScreenToWorldPoint(cursorPos);
        cursorSpacePos.z = 0f;
        currentLine.SetPosition(lineVertexIndex - 1, cursorSpacePos);
      }
    }
  }
}

掛上腳本,你運(yùn)行就可以寫(xiě)字了,就這么簡(jiǎn)單,嘗試一下。

謝謝支持!有問(wèn)題或者代碼優(yōu)化建議歡迎評(píng)論。

工程下載

以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持我們。

上一篇:基于C#實(shí)現(xiàn)微信支付寶掃碼支付功能

欄    目:C#教程

下一篇:unityZXing二維碼的生成與掃描

本文標(biāo)題:Unity使用LineRender斷筆寫(xiě)字

本文地址:http://mengdiqiu.com.cn/a1/C_jiaocheng/4719.html

網(wǎng)頁(yè)制作CMS教程網(wǎng)絡(luò)編程軟件編程腳本語(yǔ)言數(shù)據(jù)庫(kù)服務(wù)器

如果侵犯了您的權(quán)利,請(qǐng)與我們聯(lián)系,我們將在24小時(shí)內(nèi)進(jìn)行處理、任何非本站因素導(dǎo)致的法律后果,本站均不負(fù)任何責(zé)任。

聯(lián)系QQ:835971066 | 郵箱:835971066#qq.com(#換成@)

Copyright © 2002-2020 腳本教程網(wǎng) 版權(quán)所有