Unity之Clamp(限制取值范围)与Lerp(插值运算)

Clamp是Unity引擎中的一个静态方法,用于将一个值限制在指定的范围内,它可以用于限制数值,位置和旋转等属性的取值范围 


 //
        // 摘要: 
        //     Clamps value between min and max and returns value.
        //
        // 参数: 
        //   value:       //需要限制的值
        //
        //   min:     //最小
        //
        //   max    //最大
      //  public static int Clamp(int value, int min, int max);
 

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

public class ClampTest : MonoBehaviour {

    private float PosX;
    private float Min;
    private float Max;
    private GameObject obj;
	void Start () 
    {  
        Min = 0;
        Max = 20;
        obj = GameObject.Find("Cube");

	}	
	void Update () 
    {
        PosX = obj.transform.position.x;
        PosX= Mathf.Clamp(PosX, Min, Max);
    //游戏对象obj的x轴位置只能在Min与Max之间  	
        obj.transform.position = new Vector3(PosX, obj.transform.position.y, obj.transform.position.z);   	
	}
}

Lerp:在两个点之间进行线性插值。

Lerp(a,b,t)

使用插值 t 在点 a 和 b 之间进行插值。参数 t 限制在范围 [0, 1] 内。这最常用于查找占两个终端之间距离特定百分比的点

返回 a + (b - a) * t

 

Material.Lerp  //俩材质球之间
Mathf.Lerp //俩数值之间
Vector.Lerp //俩向量之间
Color.Lerp //俩颜色之间

public class LerpTest : MonoBehaviour
{
    //Material.Lerp
    public Material material1; 
    public Material material2;
    private float fTime = 1.0f;
    private Renderer renderer;

    //Mathf.Lerp
    private float f;
    private float f_left;
    private float f_right;

    //Vector.Lerp 
    private Vector3 v;
    private Vector3 v_left;
    private Vector3 v_right;

    //Color.Lerp 
    private Color c;
    private Color c_left;
    private Color c_right;
	
	void Start ()
    {
          //Material.Lerp
         renderer=GetComponent<Renderer>();
         renderer.material = material1;

        //Mathf.Lerp
        f_left=2;
        f_right = 3;

        //Vector.Lerp 
        v_left = Vector3.zero;
        v_right = new Vector3(2, 2, 2);

        //Color.Lerp 
        c_left = Color.black;
        c_right = Color.blue;
	}
	
	void Update ()
    {
        //Material.Lerp
        float lerp = Mathf.PingPong(Time.time,fTime)/fTime; 
        //在持续时间内乒乓材质
        renderer.material.Lerp(material1,material2,lerp); //第三个参数对应的是权重取值范围为0-1表示material1-material2变换0%-100%

        //Mathf.Lerp

        f = Mathf.Lerp(f_left, f_right, lerp);
        Debug.Log(f);

        //Vector3.Lerp
        v = Vector3.Lerp(v_left, v_right, lerp);
        Debug.Log(v);

        //Color.Lerp 
        c = Color.Lerp(c_left,c_right,lerp);
        Debug.Log(c);

	}
}

  • 17
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值