Create Empty
挂在脚本 充当游戏控制器 GameControler
获取脚本挂在的游戏对象 属性
gameObject.name
gameObject.tag
获取游戏对象的 激活状态 & 修改状态
gameObject.activeSelf
gameObject.SetActive(false);
获取游戏对象 身上组建
CubeController c = gameObject.GetComponent<CubeController>();
给游戏对象 添加组件
Light l = gameObject.AddComponent<Light>();
通过Tag 名字查找游戏对象
GameObject g= GameObject.FindGameObjectWithTag("Player");
GameObject gg = GameObject.Find("Main Camera");
GameObject[] ggg = GameObject.FindGameObjectsWithTag("Plater");
三个方向的 分量
Vector3 就是一个类 表示向量 既有大小 又有方向的量
Vector3 v = new Vector3();
float x = v.x;
float y = v.y;
float z = v.z;
//获取V单位向量
v.Normalize();
Vector3 vn = v.normalized;
//获取V长度
float ll = v.magnitude;
//表示世界坐标系 Y轴正方向上的单位向量
Vector3.up;
vector3.down;
vector3.right;
Vector3.left;
Vector3.forward;
Vector3.back;
Vector3.zero;
求两个向量的夹角
Vector3 v1 = new Vector3(1.4f, 6f, 7.2f);
Vector3 v2 = new Vector3(2f, 6.5f, 12.3f);
Vector3.Angle(v1, v2);
获取两个点的距离
Vector3 pos1 = new Vector3(4f, 2f, 11f);
Vector3 pos2 = new Vector3(2f, 12.6f, 8f);
float d = Vector3.Distance(pos1, pos2);
向量点乘
float dd = Vector3.Dot(v1, v2);
向量叉乘
Vector3 vc = Vector3.Cross(v1, v2);
获取当前脚本所挂在的游戏对象身上的Transform 组件
控制游戏对象的位置 旋转 缩放
// 组建的世界坐标
Vector3 v= transform.position;
//局部坐标
transform.localPosition;
//一般不直接修改四元数
transform.rotation;
//重新指定游戏对象 父对象transform 组件
transform.parent;
//获取当前游戏对象的 根父对象
transform.root;
//获取当前游戏对象 叫做cube 的子对象
transform.Find("Cube");
transform.FindChild("Cube");
//世界坐标
transform.position = new Vector3(0,0,0);
//局部坐标
transform.localPosition = new Vector3(0, 0, 0);
//缩放
transform.localScale = new Vector3(1f, 2f, 1f);
//改变游戏对象位置
transform.Translate(new Vector3(0,0.1f,0));
//旋转当前游戏对象
transform.Rotate(Vector3.up,10f);
//欧拉角-属性
transform.localEulerAngles = new Vector3(0f,45f,0f);
//让当前游戏对象 每秒准确旋转 30度
transform.Rotate(Vector3.up, Time.deltaTime * angleSpeed);
Time
float f = Time.time;
print("从游戏开始到当前"+f);
//从上一帧开始 到当前帧结束 间隔
float delta = Time.deltaTime;
print(delta);
//表示 时间流逝的快慢
//1 -表示正常时间流逝
//2 -表示正常速度两倍
//0 -时间暂定
//float ts = Time.timeScale;
//求绝对值
//int i = Mathf.Abs(-12);
求最大最小值
//Mathf.Max(2, 3, 4, 5, 6, 7, 2);
//Mathf.Min(3, 4, 5, 6, 7, 8, 2);
// 三角函数
//float sin= Mathf.Sin();
//float cos= Mathf.Cos();
//π
//Mathf.PI;
//平方根
//Mathf.Sqrt();
给当前游戏对象 施加一个力 需要添加刚体
private Rigidbody r;
r = GetComponent<Rigidbody>();
r.AddForce(new Vector3(0f, 100f, 0f));
//扭矩 可以使游戏对象旋转
r.AddTorque(new Vector3(0f,100f,0f));
//给游戏对象 在指定的位置上 添加一个力
r.AddForceAtPosition(new Vector3(0f, 10f, 0f), new Vector3(.05f, 0.5f, 0.5f));
//爆炸力
r.AddExplosionForce(1500f,Vector3.zero,10f);
//代码生成 游戏对象
public GameObject playerPrefab;
Vector3 pos = new Vector3();
pos.y= 0f;
//使用Random.range 方法产生随机数
pos.x = Random.Range(-5f, 5f);
pos.z = Random.Range(-5f, 5f);
float angle = Random.Range(0f, 360f);
//1使用哪个预设体 创建游戏对象
//2创建出的游戏对象 初始位置
//3创建出的游戏对象 初始旋转角度
//生成 游戏对象
Instantiate(playerPrefab, pos, Quaternion.AngleAxis(angle, Vector3.up));
//添加组件
//.AddComponent<Test>()
鼠标事件
//鼠标事件
//按下
void OnMouseDown()
{
print("Down");
}
//任何地方抬起
void OnMouseUp()
{
print("Up");
}
//移动
void OnMouseDrag()
{
print("Drag");
}
// 当鼠标进入到内部时 调用
void OnMouseEnter()
{
print("Enter");
}
// 当鼠标离开内部时 调用
void OnMouseExit()
{
print("Exit");
}
// 当鼠标持续停留在游戏对象身上 调用
void OnMouseOver()
{
print("Over");
}
//当我们想点击按钮 一样点击游戏对象
void OnMouseUpAsButton()
{
print("UpAsButton");
}
碰撞与触发器监听
//碰撞相关的三个事件
//开始碰撞
private void OnCollisionEnter(Collision collision)
{
print("开始碰撞");
}
private void OnCollisionExit(Collision collision)
{
print("碰撞结束");
}
//
private void OnCollisionStay(Collision collision)
{
print("碰撞中");
//判断碰撞中 碰撞的是什么
if (string.Equals("Cube2",collision.gameObject.name))
{
print("碰撞了汽车");
}
}
//触发器相关 三个事件
需要取消 Collider 的 iS Trigger
//触发开始
private void OnTriggerEnter(Collider other)
{
print("---触发");
}
//触发范围内 持续调用
private void OnTriggerStay(Collider other)
{
print("---触发范围内");
}
//离开出发范围 调用一次
private void OnTriggerExit(Collider other)
{
print("离开触发范围");
}