unity3d培训_004

向量与坐标

using UnityEngine;
using System.Collections;

public class direct : MonoBehaviour {

	// Use this for initialization
	void Start () {

        Vector3 a = new Vector3();
        float x = a.x;
        float y = a.y;
        float z = a.z;

        a.Normalize();//获取a的单位向量,且a长度变为1。
        Vector3 b = a.normalized;//获取a的单位向量,且a不变。
        float L = a.magnitude;//获取a向量的长度。
/*
        Vector3.up;//世界坐标系上 Y 轴方向单位向量。
        Vector3.down;//
        Vector3.right;//X轴的
        Vector3.left;//
        Vector3.forward;//Z轴的
        Vector3.back;
        Vector3.zero;//表示世界坐标系的原点。
*/
        //获取向量 v1. v2 间角度。
        Vector3 v1 = new Vector3(0.0f, 0.0f, 1.0f);
        Vector3 v2 = new Vector3(1.0f, 1.0f, 1.0f);
        Vector3.Angle(v1,v2);

        //获取两点间距离。
        Vector3 pos1 = new Vector3(0.0f, 0.0f, 0.0f);
        Vector3 pos2 = new Vector3(1.0f, 1.0f, 1.0f);
        float distan = Vector3.Distance(pos1, pos2);

        //向量点乘
        float aa=Vector3.Dot(v1, v2);
        Vector3 bb = Vector3.Cross(v1,v2);


	}
	
	// Update is called once per frame
	void Update () {
	
	}
}

transform的函数使用

using UnityEngine;
using System.Collections;

public class Reda : MonoBehaviour {

	// Use this for initialization
	void Start () {
        //transform 获取游戏对象的位置
        //transform.position 世界坐标系的三维坐标
        //transform.localPosition 局部坐标位置
        Vector3 pos = transform.position;
        print(pos);

        //transform.rotation 旋转属性,一般不用它修改
        //transform.localRotation

        //Vector3 a = transform.localScale;
        

    }

    // Update is called once per frame
    void Update () {
	
        if(Input.GetKeyDown(KeyCode.P))
        {
            //transform.position = Vector3.zero;//移到原点
            //transform.localPosition=Vector3.zero;//局部坐标的改变

            transform.localScale = new Vector3(10f,10f,100f);//放大10,10,100倍
        }

        if (Input.GetKey(KeyCode.O))
        {
            transform.Translate(new Vector3(0, 0.2f, 0));//该函数表示:当前位置加上后面的三维向量。
        }

        if(Input.GetKey(KeyCode.I))
        {
            transform.Rotate(Vector3.up,0.1f);//可以给一个向量。在当前角度追加角度。物体的x绕所给的x向量,y绕y,z绕z,去旋转。
            //或者给一个轴,再给一个度数。如本例。
        }

        if (Input.GetKey(KeyCode.U))
        {
            transform.eulerAngles = new Vector3(0f,45f,45f);//(欧拉角)旋转到这个角度。第二次执行看不出效果。
        }

        if (Input.GetKey(KeyCode.Y))
        {
            //transform.parent 返回当前对象父对象的transform 组件可以set和get。
            //transform.root 返回当前最外层父对象。只能get。不能set。
            //transform.Find("cube"); 获取当前游戏对象叫做cube的子对象。
            //transform.FindChild("cube"); 返回第一个叫cube的子对象。
        }

        if(Input.GetKeyDown(KeyCode.T))
        {
            print("游戏开始了 : " + Time.time + " 秒。");//Time.time 返回游戏从开始到现在的秒数。
            print("从上帧到这一帧的时间为: " + Time.deltaTime + " 秒");//一般计算机为60帧每秒。具体看情况。
        }

        transform.Rotate(Vector3.up, 30f * Time.deltaTime);//每秒30度旋转。因为 Updata按照每秒deltatime 次刷新。
        float tt = Time.timeScale;//时间的缩放。比如游戏快进,慢放等。为0时,就是游戏暂停。正常值为1。

        //Mathf.Abs(-100);//Math类。数学函数类。3D 游戏很常用。里面函数很多。
        //Mathf.Max(100,400,30,500);返回最大值的。Mathf.sqrt();求平方
        //Mathf.Sin();等等。可以查圣典手册。官网查询等。

    }
}




  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值