Unity(Time && Mathf)

370 阅读1分钟

#一、描述
此课程介绍Time时间类和Mathf数学类的使用

#二、基本API

(1) 返回游戏开始时间到现在的持续时间

float currTime = TIme.time

(2) 返回一帧所发费的时间

float distanceTIme = Time.deltaTime;

(3) 想要在update()方法中一秒旋转30度,会根据帧所发费的时间进行旋转

transform.Rotate (Vector3.up,Time.deltaTime * 30);

(4) 返回绝对值,还有其他等数学操作类,参考Mathf类

int abs = Mathf.Abs (-3)

#三、使用示例

	void Update () {

		if (Input.GetKeyDown(KeyCode.P)) {
			//显示从游戏开始到当前持续了多少时间,返回float秒单位
			float currtime = Time.time;
			print ("从游戏开始到现在 : "+ currtime);

			//返回上一帧到这一帧所所发费的时间
			float distanceTime = Time.deltaTime;
			print ("上一帧到这一帧的时间 :" + distanceTime);

		}
		//Time.deltaTime就是一帧所发费的时间,比如一秒会执行60帧,
		//这里需要一秒旋转30度,则我们可以求出一帧所发费的时间 * 30度,返回的就是一帧所需要旋转的角度,
		//当这60帧的旋转都结束后,刚好旋转了30度,60帧发费的时间总和也刚好是1秒
		transform.Rotate (Vector3.up,Time.deltaTime * 30);
	
		//下面就是一些数学常用的工具类
		int abs = Mathf.Abs (-3);  // 求出绝对值:abs = 3
		int max = Mathf.Max (1,2); // 求出最大值:max = 2
		int min = Mathf.Min (2,1); // 求出最小值:min = 1
		Mathf.Cos;
		Mathf.Ceil;
		Mathf.PI;

	}

###三、Mathf常用方法

  1. 约束值在最大值和最小值之间,不会超出限制
Mathf.Clamp(distance,distanceMin,distanceMax);
  1. 平滑阻尼效果,当前点到目标点,有一个缓冲的效果,类似弹簧一样,一点点的过去。
public Transform target;
    public float smoothTime = 0.3F;
    private float yVelocity = 0.0F;

    void Update() {
        float newPosition = Mathf.SmoothDamp(transform.position.y, target.position.y, ref yVelocity, smoothTime);
        transform.position = new Vector3(transform.position.x, newPosition, transform.position.z);
    }