Unity插值实现随机弧线曲线运动

Unity弧线运动Unity粒子曲线运动

如上图。写了个这种游戏物体随机曲线运动的脚本。指定开始和结束的Transform随机插值曲线运动。用的为插值法。

如上两图。轨迹不一样。随机的轨迹。可用于粒子特效等内容的运行

脚本如下。

using UnityEngine;
using System.Collections;
/// <summary>
/// 作用:随机弧线运动
/// 代码:小宝
/// 最后修改:2014年11月17日 15:00:36
/// </summary>
public class TweenPositionArc : MonoBehaviour 
{

    public Transform from;
    public Transform to;

    private float mF1;
    private float mF2;
    private float mFloat = 0;

    bool isYes = false;

	void Start () 
    {
        mF1 = Random.Range(-5.0f, 5.0f);
        mF2 = Random.Range(0.0f, 1.0f);
        isYes = true;
        //StartCoroutine(Destroy());
    }


    void Update()
    {
        if (isYes)
        {
            mFloat += Time.deltaTime;
            // 弧线的中心

            Vector3 center = (from.position + to.position) * 0.5f;

            // 向下移动中心,垂直于弧线
            center -= new Vector3(mF2, mF1, 0);

            // 相对于中心在弧线上插值

            Vector3 riseRelCenter = from.position - center;

            Vector3 setRelCenter = to.position - center;

            transform.position = Vector3.Slerp(riseRelCenter, setRelCenter, mFloat);

            transform.position += center;

            if (transform.position == to.position)
            {
                StartCoroutine(Destroy());
            }
        }
    }
    IEnumerator Destroy()
    {
        yield return new WaitForSeconds(0.2f);
        Destroy(this.gameObject);
    }
}

 

本文链接:

https://bobsong.cn/399.html
1 + 8 =
快来做第一个评论的人吧~