Unity 飞线效果贝赛尔曲线实现
代码如下:
using System.Collections; using System.Collections.Generic; using UnityEngine; public class FeiXian : MonoBehaviour { public Transform pos0; //位置1 public Transform pos1; // 位置1和位置2中间的位置 public Transform pos2; ////位置2 public float time = 1f; public float startTime = 0; private int jisuqi = 0; //二次贝塞尔曲线 Vector3 Bezier(Vector3 p0, Vector3 p1, Vector3 p2, float t) { //算法第一种写法 //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; //算法第二种写法 Vector3 p0p1 = (1 - t) * p0 + t * p1; Vector3 p1p2 = (1 - t) * p1 + t * p2; Vector3 result = (1 - t) * p0p1 + t * p1p2; return result; } void Start() { //不想要固定位置可以随机位置 //pos1.position = new Vector3(0, Random.Range(5, 11), 0); } void Update() { startTime += Time.deltaTime; if (startTime > time) { startTime = 0f; //坐标转换 实现往返运动 不需要就注释掉 Transform vector = pos0; pos0 = pos2; pos2 = vector; } Vector3 pos = Bezier(pos0.position, pos1.position, pos2.position, startTime / time); transform.position = pos; } }
demo链接:
链接:https://pan.baidu.com/s/1nrpAJEC0j4iqfvkJ3lkDyw
提取码:4pyp
如果喜欢请点个赞吧 ❤❤❤