【Unity学习第三天】古迹

基本流程


**
0、学习内容:建立一个有灯光有特效有导航的场景,并控制角色在场景中移动。
1、场景创建(粒子系统和动画系统的简单学习)

    ① 使用Unity自带的地形物件(Terrian),结合一些模型预制,创建一个环境场景。
    ② 使用Lighting,为场景创建灯光。实时渲染的方式耗费性能,能够确定静态的物体可以烘焙,以贴图的形式存储光影信息。烘焙时,需要将物体们的参数修改为static,另外,参与烘焙的灯光,需要修改mode和shadow type参数。既需要参与烘焙,后续运行时也会发生动态变化的灯光改为Mixed参数。
    ③ 使用particle System粒子系统进行特效的制作(如何添加材质贴图,*关键是对粒子系统中各项参数的了解,后续可以进一步进行相关的学习*)。
    ④ 通过Animation,对相应的物体增加动画效果(录制光影动画,位移动画(感觉有点K帧的意思))
    //-------以上,就是一个简单的包含了特效和动画的场景的实现-------

2、导航相关:

    ① 生成导航,可以生成导航的物件,在static下面的Navigation Static参数是勾选上的。对物件在Navigation窗口下Mesh Render的参数进行修改(Walkble,Not Walkble,Jump)
    ② 可以在导航上进行移动的物体上,需要添加Nav Mesh Agent组件,注意调节宽高。

3、人物移动,相机跟随

    ① 定义变量,使得脚本可以获取工程的导航变量。
        public NavMeshAgent agent;
    ② 使用射线检测来实现人物的移动。
        if (Input.MouseButtonDown(0)) {
            Ray ray = Camera.main.ScreenPointToRay(Input.mousePosition);
            RaycastHit hit;

            if(Physics.Raycast(ray, out hit)) {
                agent.setDestination(hit.point);
            }
        }
    ③ 相机跟随,该脚本在camera上。主要在游戏初始化时,计算相机和人物的偏移量,在后续运行时,根据当前人物的位置,对相机当前应当所处的位置进行复制。

4、角色移动动画(状态机的简单使用)

    ① 在Animation文件夹下创建HeroController,并将其挂载在Hero的Animator组件上。
    ② 将相关的动画拖入Animator窗口中。
    ③ 建立transition关系,并设立transtion条件,在controller中引入speed参数。
    ④ 通过定义和挂载的方式,获取ani上的相关信息。
        public Animator ani;
    ⑤ 将导航上的速度参数,输入给ani的speed变量。
        setFloat("speed", agent.velocity.magnitude);

额外内容


**
1、刚体Rigidbody的一些参数代表意义。
2、触碰检测(OnCollisionEnter(), OnCollisionStay(), OnCollisionExit())。
3、触发检测 (OnTriggerEnter(), OnTriggerStay(), OnTriggerExit())。
4、顶点越多,渲染越耗费性能,因而物理组件下,Collider类型的选择,mesh Collider一般不建议使用。

总结


**
Unity的脚本编程,首先要考虑实现脚本和工程项目的参数信息互通,然后再考虑通过Unity提供的一大堆类方法来对参数进行计算等操作,学习的最终目标应当是当Unity没有提供直接的类方法时,自己要如何设计,才能最大程度的节省性能,实现目的……吧。

猜你喜欢

转载自blog.csdn.net/weixin_43053831/article/details/82110538