Unity-3d Day04

  东西比较多  比较杂 还有数学知识  我日~~~

MonoBehaviour类:MonoBehaviour 表⽰⼀个单⼀的⾏为。Unity中⽤户对游戏对象的操作被分割成若干个
    单⼀⾏为,每个单⼀⾏为都作为⼀MonoBehaviour类来封装。继承⾃MonoBehaviour的类,不需要⾃⼰创建它
    的实例,也不能⾃⼰创建(如 new 类名)。因为所有从MonoBehaviour继承过来的类,unity都会⾃动创建实例,并且调⽤被重载的⽅
    法,如我们经常⽤到的Awake,Start, Update等。⽽普通类,可以⽤new来创建实例了。

MonoBehaviour类继承关系:

MonoBehavior类常⽤⽅法:

  Awake() 当⼀个脚本实例被载⼊时Awake被调⽤。
  Start() Start仅在Update函数第⼀次被调⽤前调⽤。
  OnEnable() 当对象变为可⽤或激活状态时此函数被调⽤。
  Update() 当MonoBehaviour启⽤时,其Update在每⼀帧被调⽤。
  FixedUpdate() 每⼀帧都在调⽤此⽅法。当处理Rigdibody时
  FixedUpdate应该代替Update⽅法
  LateUpdate() 每⼀帧都在调⽤此⽅法。当每⼀帧的Update⽅法全部执⾏完后,此⽅法开始被调⽤

  OnGUI() 渲染和处理GUI事件时调⽤。
  OnDisable() 当对象变为不可⽤或⾮激活状态时此函数被调⽤。
  OnDestroy() 当MonoBehaviour将被销毁时,这个函数被调⽤。

Transform类:

Transform组件作⽤:
  1. 负责游戏对象的变换
  2. 维持⽗⼦关系

Transform组件变量:
  position 在世界坐标系中,transform的位置
  localPosition 相对于⽗级的变换的位置
  eulerAngles 旋转作为欧拉⾓度
  localEulerAngles 相对于⽗级的变换的旋转欧拉⾓度
  rotation 在世界坐标系中物体变换的旋转⾓度作为
  Quaternion储存
  parent 返回物体变换的⽗级
  root 返回最⾼层次的

Transform组件⽅法:
  Translate 移动⼀个transform
  Rotate  eulerAngles.z度围绕z轴
      eulerAngles.x度围绕x轴
      eulerAngles.y度围绕y轴
  RotateAround 按照多少⾓度在世界坐标系中的某位置轴旋转物体
  LookAt 向前向量指向⺫标的当前位置,旋转物体
  Find 通过名字查找物体并返回,返回值类型为transform

Quaternion(四元数):

  operator * 四元数的叉乘,可⽤来连接两个旋转属性
  identity 该四元数没有旋转
  eulerAngles 返回表⽰旋转的欧拉⾓度⽅法
  Euler 返回⼀个旋转⾓度,绕x轴旋转x度,绕y轴旋转y度,绕z轴旋转z度

Vector3 (三维向量):
  变量:  normalized  magnitude  sqrtMagnitude
  ⽅法:Normalize  Cross  Dot  Project  Distance  Lerp  Slerp


Time类:

time 从游戏开始到现在的所⽤时间,是以秒计算的

deltaTime 获取上⼀次Update()⽅法执⾏的时间到当次执⾏
Update()⽅法时间的差值fixedDeltaTime 在物理和其他固定帧速率进⾏更新上⼀帧所消耗的时间,以秒计算
timeScale⽤于减缓运动效果。当timeScale传递时间为1.0时和实时⼀样;当timeScale传递时间0.5时⽐实时时间慢⼀半;当timeScale传递时间为0时游戏基本暂停

Mathf:

  Lerp 两个浮点数之间进⾏插值
  Clamp 返回⼀个限制值
  Sin 计算并返回浮点型的正弦值
  Cos 计算并返回浮点型的余弦值
  Abs 计算并返回指定参数的绝对值
  Max 返回两个值之中最⼤的值
  Min 返回两个值之中最⼩的值
  Sqr 返回平⽅根
  PI 圆周率

数学方面的就不写了  全都是各种向量啊什么的。

using UnityEngine;
using System.Collections;
using UnityEngine.UI;

public class QuatScript : MonoBehaviour {
    //public int x;
    //public int y;
    //public int z;
    //public Transform cylinder;
    //public Transform sphere;

    public Transform time;
    public Transform deltaTime;
    public Transform fixedDeltaTime;
    public Transform timeScale;
    float lerp = 0;

    // Use this for initialization
    void Start () {
        //sphere = transform.Find("Sphere");
    }
    
    // Update is called once per frame
    void Update () {

        //float rad = Mathf.PI / 2;
        //float xh = Mathf.Sin(rad / 2) * x;
        //float yh = Mathf.Sin(rad / 2) * y;
        //float zh = Mathf.Sin(rad / 2) * z;
        //float wh = Mathf.Cos(rad / 2);

        //Quaternion q = new Quaternion(xh, yh, zh, wh);
        ////欧拉角转化为四元数
        //Quaternion q = Quaternion.Euler(90f,0f,0f);
        ////四元数转化欧拉角
        //Quaternion q = Quaternion.Euler(90f, 0f, 0f);
        ////输出四元数
        //transform.rotation = q;
        ////转                    中心点         沿x轴转,rignt,up,foward    速度
        //transform.RotateAround(new Vector3(1,1,1),Vector3.up,80*Time.deltaTime);

        //float hor = Input.GetAxis("Horizontal");
        //float ver = Input.GetAxis("Vertical");
        //transform.position += Vector3.forward * ver;
        //transform.position += Vector3.right * hor;

        //transform.LookAt(cylinder);
        //sphere.transform.RotateAround(cylinder.position, Vector3.up, 80 * Time.deltaTime);


        time.GetComponent<Text>().text = Time.time.ToString();
        deltaTime.GetComponent<Text>().text = Time.deltaTime.ToString();
        fixedDeltaTime.GetComponent<Text>().text = Time.fixedDeltaTime.ToString();
        timeScale.GetComponent<Text>().text = Time.timeScale.ToString();

        
        //lerp = Mathf.Lerp(lerp, 100f, 0.5f);


    }

}

今天的代码没怎么整理 不过全都在上面了

posted @ 2015-03-26 22:46  小の太阳  阅读(245)  评论(0编辑  收藏  举报