亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

如何在使用自定義編輯器移動一條貝塞爾曲線時更新一條貝塞爾曲線

如何在使用自定義編輯器移動一條貝塞爾曲線時更新一條貝塞爾曲線

C#
斯蒂芬大帝 2021-06-23 15:16:25
我正在使用下面的代碼創建 Bézier 曲線,該代碼是從 這里獲得的。我還制作了一個BezierPair游戲對象,它有兩條貝塞爾曲線作為子對象。從下面的相應圖像和 BezierPair,其中points[0]...points[3]表示為P0... P3:我希望P0每條貝塞爾曲線在移動時始終保持不變。換句話說,我希望它們始終一起移動,并可以選擇關閉此移動。說P1兩條曲線是分開的。我怎樣才能使P1每條曲線在相同的方向上移動,覆蓋相同的距離?說P2兩條曲線是分開的。如何沿連接和的線制作另 P2一條曲線的一個曲線鏡像?請注意,鏡像線將取自以下示例中的曲線 1,因為's已移動。如果's被移動,那么鏡像線將從's 中取出。P2P0P3curve1P2curve2P2curve2P0P3我不想在運行時這樣做。所以必須使用自定義編輯器。我嘗試在下面的代碼中解決 1. 但如果沒有我在層次結構窗口中選擇 BezierPair,第二條曲線的位置就不會更新貝塞爾:public static class Bezier {public static Vector3 GetPoint (Vector3 p0, Vector3 p1, Vector3 p2,   Vector3 p3, float t) {t = Mathf.Clamp01(t);float oneMinusT = 1f - t;return    oneMinusT * oneMinusT * oneMinusT * p0 +    3f * oneMinusT * oneMinusT * t * p1 +    3f * oneMinusT * t * t * p2 +    t * t * t * p3;}public static Vector3 GetFirstDerivative (Vector3 p0, Vector3 p1, Vector3 p2, Vector3 p3, float t) {t = Mathf.Clamp01(t);float oneMinusT = 1f - t;return    3f * oneMinusT * oneMinusT * (p1 - p0) +    6f * oneMinusT * t * (p2 - p1) +    3f * t * t * (p3 - p2);}}貝塞爾曲線:[RequireComponent(typeof(LineRenderer))]public class BezierCurve : MonoBehaviour {public Vector3[] points;LineRenderer lr;public int numPoints = 49;bool controlPointsChanged = false;bool isMoving = false;public void Reset () {points = new Vector3[] {    new Vector3(1f, 0f, 0f),    new Vector3(2f, 0f, 0f),    new Vector3(3f, 0f, 0f),    new Vector3(4f, 0f, 0f)};}void Start()    {lr = GetComponent<LineRenderer> ();lr.positionCount = 0;DrawBezierCurve ();}public Vector3 GetPoint (float t) {return transform.TransformPoint(Bezier.GetPoint(points[0], points[1], points[2], points[3], t));}public void DrawBezierCurve ()  {lr = GetComponent<LineRenderer> ();lr.positionCount = 1;lr.SetPosition(0, points[0]);for (int i = 1; i < numPoints+1; i++) {    float t = i / (float)numPoints;    lr.positionCount = i+1;    lr.SetPosition(i, GetPoint(t));}}
查看完整描述

1 回答

  • 1 回答
  • 0 關注
  • 198 瀏覽

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號