向量与坐标
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();等等。可以查圣典手册。官网查询等。
}
}