void Start()
{
//可通过zero,right,left,forward...建立方向向量....
//可通过赋值建立向量
Vector3 a1=new Vector3(0.6f,1,0.5f);
Vector3 a2=Vector3.forward;
//计算两向量距离
Debug.Log(Vector3.Distance(a1,a2));
//计算两向量夹角
Debug.Log(Vector3.Angle(a1,a2));
//计算两向量点乘
Debug.Log(Vector3.Dot(a1,a2));
//叉乘Cross,模magnitude......
}
关于获取组件:
1、组件 名称=this.组件
2、组件.属性
获取游戏物体:Void Start()
{
GameObject obj=this.gameObject;
//获取游戏物体的组件---获取obj的layer,标签.tag,自身状态.activeSelf....
Debug.Log(obj.layer);
}
进行定义然后在检查器窗口进行拖入
public GameObject Cube;
通过游戏物体名称获得游戏物体:Find()---在start中
通过游戏标签获取游戏物体FindWithTag()
//Find
GameObject obj=GameObject.Find("Test");
//FindWithTag
obj=GameObject.FindWithTag("Enemy");
Transform的使用
//向量:up,down,left,right...... Debug.Log(transform.forward); //旋转---区分全局,局部,欧拉角,四元数 Debug.Log(transform.rotation); Debug.Log(transform.eulerAngles); //位置 Debug.Log(transform.position); //缩放 Debug.Log(transform.localScale); //常见方法----在update里使用 //永远朝向某个点 transform.LookAt(Vector3.forward); //旋转 transform.Rotate(Vector3.up,1);//绕纵轴旋转1度 //绕某物体旋转 transform.RotateAround(Vector3.zero,Vector3.up,1);//绕的点,绕的轴,旋转的速度 //移动 transform.Translate(Vector3.forwad*0.1f);//向前方每帧移动0.1移动
transform.Translate()//translate是一个动作属性,方向乘以时间,通过Time.deltaTime将帧转换到秒 transform.position()//是改变位置信息(瞬间出现到某一处),所以后面接的是位置 CharacterController.SimpleMove();//或move,以speed移动角色,先定义角色控制器再在start获取组件,在update里进行移动 transform.position=hit.point;//射线检测:获取到射线位置,设置射线位置坐标:hit.point为物体要移动的位置
其中的射线检测:eg:鼠标点哪,移动到哪
void Update()
{
if(Input.GetMouseButtomDown(0))
{
//通过摄像机获取鼠标点击的点
Ray ray=Camera.main.ScreenPointToRay(Input.mousePosition);
//声明碰撞信息类hit
Raycast hit;
//进行检测,通过bool值返回
bool rr=Physics.Raycast(ray,out hit);
if(rr==true)
{
Debug.Log(hit.point);
//进行移动
transform.position=hit point;
}
}
}
一个动画切换之间的小栗子(若有两个动画)
1.在动画对象上创建animator组件
2.创建动画控制器
1.在动画对象上创建animator组件
2.创建动画控制器
3.将动画控制器加到animator中
4.双击打开控制器,将需要加入切换的动画拖入,添加所需要的过渡
5.添加控制参数,参数名字即为脚本控制时所对应的名字
例如此时添加bool类型的参数IsRun
6.点击对应的过渡线段设置conditions中的对应参数值
即此时,从idle切换到run的IsRun参数bool值为true,从run切换到idle的IsRun参数bool值为false
7.在游戏对象上挂载控制脚本,通过脚本控制虚拟轴控制对象在两个动画之间切换
虚拟轴(WASD,上下左右都可以进行移动)
在项目管理器中获取轴,按键名称
void Update()
{
//先获取水平轴
float horizontal=Input.GetAxis("Horizontal");
float vertical=Input.GetAxis("Vertical");
//方向向量
Vector3 dir=new Vector3(horizontal,0,vertical);
//如果此时摁了按键,则dir!=0
if(dir!=Vector.zero)
{
//朝向方向向量
transform.rotation=Quaternion.LookRotation(dir);
transform.Translate(Vector3.forward.forward*2*Time.deltaTime);//Time.deltaTime将以帧为单位变成秒
}
}



