贝塞尔 2D图片曲线运动与旋转

本文介绍了如何在Unity游戏引擎中使用C#脚本来实现2D图片沿着贝塞尔曲线平滑移动及旋转的效果,通过Textsss类展示了基本的脚本实现方法。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class Textsss : MonoBehaviour
{

public Transform fireTran;
public Transform middleTran1;
public Transform middleTran2;
public Transform middleTran3;
public Transform topTran;
List<Transform> lt = new List<Transform>();
void Start()
{
    lt.Add(fireTran);
    print(fireTran.position);
    lt.Add(middleTran1);
    lt.Add(middleTran2);
    lt.Add(middleTran3);
    lt.Add(topTran);
}

float t;
void Update()
{



    RotaToEnd();

    if (t < 1)
    {
        t += 0.03f;
        Debug.Log(t);
        fireTran.position = Bezier1(t, lt);
    }
    if (t>1)
    {
        fireTran.gameObject.SetActive(false);
    }
    //  fireTran.position = Bezier1(t, lt);
}

// n阶曲线,递归实现
public Vector3 Bezier(float t, List<Vector3> p)
{
    if (p.Count < 2) 
        return p[0];
    List<Vector3> newp = new List<Vector3>();
    for (int i = 0; i < p.Count - 1; i++)
    {
        Vector3 p0p1 = (1 - t) * p[i] + t * p[i + 1];
        newp.Add(p0p1);
    }
    return Bezier(t, newp);
}
// transform转换为vector3,在调用参数为List<Vector3>的Bezier函数
public Vector3 Bezier1(float t, List<Transform> p)
{
    if (p.Count < 2)
       return p[0].position;
    List<Vector3> newp = new List<Vector3>();
    for (int i = 0; i < p.Count; i++)
    {
        newp.Add(p[i].position);
    }
    return Bezier(t, newp);
}



public void RotaToEnd() 
{
    Vector3 target_pos = topTran.position;
    Vector3 my_pos = fireTran.transform.position;
    Vector3 from = Vector3.up;
    Vector3 to = target_pos - my_pos;
    fireTran.transform.rotation = Quaternion.FromToRotation(from, to);
   // Debug.Log(fireTran.transform.rotation);

}

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值