栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 游戏开发 > 其他

Unity基本操作(持续更新ing......)

其他 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

Unity基本操作(持续更新ing......)

关于向量:(通过Debug.Log()---输出获取到的内容)
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将以帧为单位变成秒
   }
}

 

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/901583.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号