欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

C#實(shí)現(xiàn)貝塞爾曲線的方法

 更新時(shí)間:2022年02月17日 10:33:06   作者:Mo明  
這篇文章主要為大家詳細(xì)介紹了C#實(shí)現(xiàn)貝塞爾曲線的方法,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下

本文實(shí)例為大家分享了C#實(shí)現(xiàn)貝塞爾曲線的具體代碼,供大家參考,具體內(nèi)容如下

話不多直接上代碼

public Transform[] controlPoints; //曲線的控制點(diǎn) ,最少三個(gè),起點(diǎn),弧度點(diǎn),終點(diǎn)
? ? public GameObject codeGameObject; //要?jiǎng)拥奈矬w

? ? private int _segmentNum = 50; //運(yùn)動(dòng)物體過程分的段數(shù)
? ? private int numIndex = 1;
? ??
void Start()
? ? {
? ? ? ? moveGameObject(2);
? ? }

void moveGameObject(float time)
? ? {
? ? ? ? numIndex = 1;
? ? ? ? InvokeRepeating("setInterval", 0, time/50);
? ? }

void setInterval()
? ? {
? ? ? ? int nodeIndex = 0;
? ? ? ? float t = numIndex / (float)_segmentNum;
? ? ? ? Vector3 pixel = CalculateCubicBezierPoint(t, controlPoints[nodeIndex].position,
? ? ? ? ? ? controlPoints[nodeIndex + 1].position, controlPoints[nodeIndex + 2].position);
? ? ? ? codeGameObject.gameObject.transform.position= pixel;
? ? ? ? numIndex++;

? ? ? ? if(numIndex> _segmentNum)
? ? ? ? {
? ? ? ? ? ? CancelInvoke("setInterval");
? ? ? ? }
? ? }
Vector3 CalculateCubicBezierPoint(float t, Vector3 p0, Vector3 p1, Vector3 p2)
? ? {
? ? ? ? float u = 1 - t;
? ? ? ? float tt = t * t;
? ? ? ? float uu = u * u;

? ? ? ? Vector3 p = uu * p0;
? ? ? ? p += 2 * u * t * p1;
? ? ? ? p += tt * p2;

? ? ? ? return p;
? ? }

項(xiàng)目里的截圖:

運(yùn)行就可以看到球在三個(gè)方塊之間移動(dòng)的曲線了

第二種方案使用DOTweenPath

/**
? ? ? ? ?* @brief ? 播放道具飛行動(dòng)畫
? ? ? ? ?*
? ? ? ? ?* @param ? prop ? ?道具
? ? ? ? ?* @param ? sendPos 起始點(diǎn)
? ? ? ? ?* @param ? endP ? ?終點(diǎn)
? ? ? ? ?* @param ? fHeight 貝塞爾曲線中間點(diǎn)的高度(控制曲線)
? ? ? ? ?*
? ? ? ? ?* @return ?飛行動(dòng)畫時(shí)間
? ? ? ? ?*/
? ? public float PlaySendFlyAnim(GameObject prop, Vector3 sendPos, Vector3 endP, float fHeight, float time)
? ? {
? ? ? ? float fTime = 0.0f;
? ? ? ? if (prop == null)
? ? ? ? {
? ? ? ? ? ? return fTime;
? ? ? ? }
? ? ? ??
? ? ? ? Vector3 startP = sendPos;
? ? ? ? prop.transform.position = startP;

? ? ? ? float x = Mathf.Min(startP.x, endP.x) + Mathf.Abs(startP.x - endP.x) / 2f;
? ? ? ? float y = Mathf.Min(startP.y, endP.y) + Mathf.Abs(startP.y - endP.y) / 2f;
? ? ? ? float z = startP.z;
? ? ? ? Vector3 midP = new Vector3(x, y, z);
? ? ? ? double length = Math.Sqrt(Math.Pow(sendPos.x - midP.x, 2) + Math.Pow(sendPos.y - midP.y, 2));
? ? ? ? //midP.x = fHeight / (float)length * (sendPos.x - midP.x) + midP.x;
? ? ? ? //midP.y = fHeight / (float)length * (sendPos.y - midP.y) + midP.y;
? ? ? ? int rangeRadomNum = UnityEngine.Random.Range(0, 2);
? ? ? ? if(rangeRadomNum == 1)
? ? ? ? {
? ? ? ? ? ? midP.x = fHeight / (float)length * (endP.x - midP.x) + midP.x;
? ? ? ? ? ? midP.y = endP.y;
? ? ? ? }
? ? ? ? else
? ? ? ? {
? ? ? ? ? ? midP.y = fHeight / (float)length * (endP.y - midP.y) + midP.y;
? ? ? ? ? ? midP.x = endP.x;
? ? ? ? }
? ? ? ? //fTime = 2.0f;
? ? ? ? fTime = time;
? ? ? ? List<Vector3> arrRecPos = new List<Vector3>();

? ? ? ? arrRecPos.Add(startP);
? ? ? ? arrRecPos.Add(midP);
? ? ? ? arrRecPos.Add(endP);
? ? ? ? prop.transform.DOPath(arrRecPos.ToArray(), fTime, PathType.CatmullRom, PathMode.Full3D).SetEase(Ease.Linear);

? ? ? ? return fTime;
? ? }
/// <param name="sendPos"> 玩家頭像位置</param>
? ? /// <param name="endP">篩子停止位置</param>
? ? /// <param name="i">篩子大小</param>
? ? /// <param name="radian">弧度</param>
? ? /// <param name="time">時(shí)間</param>
? ? /// <returns></returns>
? ? public float PlayAddFriendAnim(Vector3 sendPos, Vector3 endP,int i,int radian = 0, float time = 1.5f)
? ? {
? ? ? ? GameObject shaizi = this.transform.Find("shaizi_anmi4_0").gameObject;
? ? ? ? shaizi.GetComponent<Animator>().enabled = true;

? ? ? ? SpriteRenderer _shaizhiV = shaizi.GetComponent<SpriteRenderer>();
? ? ? ? float fTime = PlaySendFlyAnim(shaizi, sendPos, endP, radian, time);

? ? ? ? DOTween.Sequence().AppendInterval(fTime).AppendCallback(() =>
? ? ? ? {
? ? ? ? ? ? if (shaizi != null)
? ? ? ? ? ? {
? ? ? ? ? ? ? ? shaizi.GetComponent<Animator>().enabled = false;
? ? ? ? ? ? ? ? _shaizhiV.sprite = shaiziData[i-1];
? ? ? ? ? ? ? ? StartCoroutine(Destroyshaizi(shaizi));
? ? ? ? ? ? }
? ? ? ? });

? ? ? ? return fTime;
}

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

相關(guān)文章

  • C# BackgroundWorker使用教程

    C# BackgroundWorker使用教程

    這篇文章主要為大家詳細(xì)介紹了C# BackgroundWorker使用教程,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2018-09-09
  • C#字符串的常用操作工具類代碼分享

    C#字符串的常用操作工具類代碼分享

    這篇文章主要介紹了C#字符串的常用操作工具類代碼分享,需要的朋友可以參考下
    2014-04-04
  • 詳解C# 代碼占用的空間

    詳解C# 代碼占用的空間

    這篇文章主要介紹了C# 代碼占用的空間的相關(guān)知識(shí),非常不錯(cuò),具有參考借鑒價(jià)值,需要的朋友可以參考下
    2018-02-02
  • 詳解C#中IAsyncDisposable接口的使用

    詳解C#中IAsyncDisposable接口的使用

    在.NET Core 3.0的版本更新中,官方我們帶來了一個(gè)新的接口 IAsyncDisposable,下面小編就來和大家聊聊它的簡(jiǎn)單使用吧,感興趣的小伙伴可以跟隨小編一起學(xué)習(xí)一下
    2023-07-07
  • C#中Convert.ToDecimal()報(bào)錯(cuò)問題的解決

    C#中Convert.ToDecimal()報(bào)錯(cuò)問題的解決

    這篇文章主要給大家介紹了關(guān)于C#中Convert.ToDecimal()報(bào)錯(cuò)問題的解決方法,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧。
    2017-08-08
  • .NET的深復(fù)制方法(以C#語言為例)

    .NET的深復(fù)制方法(以C#語言為例)

    深復(fù)制需要將對(duì)象實(shí)例中字段引用的對(duì)象也進(jìn)行復(fù)制,在平時(shí)的編程工作中經(jīng)常要用到這種復(fù)制方式,下面以c#為例來演示一下方法。
    2016-10-10
  • C#實(shí)現(xiàn)對(duì)圖片文件的壓縮、裁剪操作實(shí)例

    C#實(shí)現(xiàn)對(duì)圖片文件的壓縮、裁剪操作實(shí)例

    這篇文章主要介紹了C#實(shí)現(xiàn)對(duì)圖片文件的壓縮、裁剪操作,較為詳細(xì)的介紹了操作過程中用到的相關(guān)類文件及具體的操作步驟,是非常實(shí)用的技巧,需要的朋友可以參考下
    2014-09-09
  • C#判斷密碼強(qiáng)度的方法

    C#判斷密碼強(qiáng)度的方法

    這篇文章主要介紹了C#判斷密碼強(qiáng)度的方法,較為詳細(xì)的分析了C#判斷密碼強(qiáng)度的原理與實(shí)現(xiàn)技巧,具有一定參考借鑒價(jià)值,需要的朋友可以參考下
    2015-08-08
  • C# 三種方式實(shí)現(xiàn)Socket數(shù)據(jù)接收

    C# 三種方式實(shí)現(xiàn)Socket數(shù)據(jù)接收

    這篇文章主要給大家分享三種實(shí)現(xiàn)C# 實(shí)現(xiàn)Socket數(shù)據(jù)接收的方式,接下倆小編就來為大家詳細(xì)介紹吧,需要的朋友可以參考一下
    2021-10-10
  • C# winform分頁查詢的實(shí)現(xiàn)示例

    C# winform分頁查詢的實(shí)現(xiàn)示例

    這篇文章主要介紹了C# winform分頁查詢的實(shí)現(xiàn)示例,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2021-04-04

最新評(píng)論