零基础学习Unity提高版!!!

一、角色控制器

角色控制器与碰撞器相似,选择角色控制器,要先移除碰撞器

Sloope limit:爬坡角度

Step Offset:台阶高度

Skin Width:皮肤厚度

Min Move Distance:最小移动距离

Center/Radius/height:胶囊的中心点,半径,高度值

角色控制器移动

        注:角色控制器组件所在的游戏物体身上,不需要”碰撞器“和”刚体“

常用属性:isGrounded:是否在地面上

常用方法:

1->Move(Vector3 dir * Time.deltaTime)   和Transform.TransLate雷同,没有重力,需要传递的是一个方向,数值的大小影响移动,所以需要乘上”Time.deltaTime“

使用move方法时如果物体会上坡,但是物体下坡时降不到地面上。SimpleMove方法可以实现落地功能

2->SimpleMove(Vector3 dir)  会应用重力,需要传递一个速度,并且本身就是按照事件来计算的,数值大小虽然也会影响移动速度,但是不会被帧率影响,它是每秒速度,不需要乘Time.deltaTime通常用在fixedupdate()中调用(这个方法是固定频率的帧更新)

 二.射线

定义射线:Ray ray = new Ray(Vector3.zero,new Vector3(0,1,0))

定义射线检测

        RaycastHit hit;

        if(Physics.Raycast(ray,out hit)){

        Debug.Log(hit.controller.gameObject.name);

        }

        RaycastHit:射线接触碰撞体组件后,得到的碰撞信息都保存在这种类型的变量中

常用属性:hit.point:接触坐标;hit.collider:接触到的碰撞体组件;hit.distance:接触点到起点的距离

通过摄像机生成射线:从相机或者理解成屏幕中心发射一个射线,方向为鼠标的位置

        Ray ray = Camera.main.ScreenPointToRay(Input.mousePosition);

案例:

这个门对象有一个关门和开门动画,而左门和右门没有动画,当点击左门或右门时需要调用父对象的动画

定义Boolean IsDoorOpen为false

 三、触发器

刚体的触发(碰撞器,属性,触发属性):

工作原理:碰撞器->(碰撞选项)->触发器

游戏物体打上触发选项后,不可再加刚体组件,加上也不起作用

触发设置:

(1)两个物体都必须有”碰撞组件“

(2)被碰撞的物体的碰撞器的IsTrigger属性必须打勾

(3)施碰物体必须有刚体组件

触发方法: OnTriggerEnter(Collider other):触发进入

                   OnTriggerStay(Collider other):接触中

                   OntriggerExit(Collider other):接触结束

四、Unity动画

 Unity动画的制作可以采用两种格式:

(1)使用外部软件制作动画,以FBX格式导入到Unity3d中。例如:采用3ds max制作动画并导出FBX,再导入unity中,外部动画导入U3d中后,需要剪切成片段动画,然后执行播放。

在Unity中需要进行下面设置

1->在Rig面板中

2->在Animation面板中

3->在Materials面板中

(2)作用unity自带Animation组件,制作动画。

Unity动画的控制采用”状态机“控制,在Animator中进行操作

(1)Unity中在Animation中制关键帧动画。

(2)什么是”状态机“,状态机的基本参数设置

(3)”状态“的切换,状态连线,连线切换的条件设置

步骤:

1->首先在一个文件夹中创建动画控制器和动画

2->将动画控制器加载到物体上

3->将动画拖入到Animator中

4->在Animation中编写动画 

猜你喜欢

转载自blog.csdn.net/m0_56632799/article/details/128041293
今日推荐