Unity企业内训(第4讲:Unity物理系统)(Yanlz+Unity+物理系统+立钻哥哥+碰撞器+刚体+碰撞检测+触发事件+物理材质+射线+Collider+Rigidbody+Ray+)

《Unity企业内训》

版本程序员

做者面试

参与者数据库

完成日期编程

备注设计模式

Unity_Training_V01_1.0性能优化

严立钻网络

 

2018.09.11数据结构

 

 

 

 

 

 

 

 

##《Unity企业内训》发布说明:框架

++++“Unity企业内训”是对企业内非程序员岗位的Unity普及,好比产品运营等,让相关人员熟悉Unity开发过程,更了解程序员的开发流程和技能点;有利于沟通交流和产品需求提出及优化;ide

++++“Unity企业内训”定位是非程序员岗位,再次声明:程序员请绕行,产品运营美术等请进入

 

 

##《Unity企业内训》目录:

++++Unity企业内训(目录)http://www.javashuo.com/article/p-oefbctlf-mn.html

#第1讲:Unity中C#开发基础

#第2讲:Unity引擎基础

#第3讲:Unity面向组件开发

#第4讲:Unity物理系统

#第5讲:UGUI

#第6讲:Unity动画系统

#第7讲:Unity特效渲染

#第8讲:Unity数据存储

#第9讲:Unity中Sqlite数据库

#第10讲:Unity中的资源管理

#第11讲:Unity中的性能优化

#第12讲:Unity网络

#第13讲:设计模式

#第14讲:UML类图

#第15讲:Shader编程

#第16讲:游戏框架

#第17讲:Lua热更新

#第18讲:UnityAPI

#第19讲:VIVE开发

#第20讲:Oculus开发

#第21讲:Unity案例分析

#第22讲:VRTK跨平台开发

 

 

 

 

 

 

#第4讲:Unity物理系统

#第4讲:Unity物理系统

#第4讲:Unity物理系统

++++4.一、人机交互

++++4.二、碰撞器

++++4.三、刚体

++++4.四、碰撞检测

++++4.五、触发事件

++++4.六、物理材质

++++4.七、射线

 

 

 

 

##4.一、人机交互

##4.一、人机交互

++4.一、人机交互

++++4.1.一、Input类简介

++++4.1.二、键盘输入的经常使用方法

++++4.1.三、输入管理器

++++4.1.四、鼠标的属性和方法

 

 

###4.1.一、Input类简介

###4.1.一、Input类简介

++4.1.一、Input类简介

++++立钻哥哥:Input类是输入系统的接口,使用这个类可以读取输入管理器设置的按键,以及访问移动设备的多点触控或加速感应数据,能够经过该类来实现外部设备控制游戏场景里面的物体

 

 

 

###4.1.二、键盘输入的经常使用方法

###4.1.二、键盘输入的经常使用方法

++4.1.二、键盘输入的经常使用方法

++++立钻哥哥:键盘输入的经常使用方法:GetKey()、GetKeyDown()、GetKeyUp()

++++[GetKey()]:按键按下期间返回true

++++[GetKeyDown()]:按键按下的第一帧返回true

++++[GetKeyUp()]:按键松开的第一帧返回true

 

 

 

###4.1.三、输入管理器

###4.1.三、输入管理器

++4.1.三、输入管理器

++++立钻哥哥:Unity提供了输入管理器,在输入管理器中咱们能够自定义一些虚拟的轴,经过获取这些轴的数值来让物体旋转移动

++++[输入管理器(InputManager)]:[Edit]=>[Project Settings]=>[Input]:打开输入管理器

++++经过名字获得虚拟的值:

static float GetAxis(string axisName);

float hor = Input.GetAxis(Horizontal);

 

 

 

###4.1.四、鼠标的属性和方法

###4.1.四、鼠标的属性和方法

++4.1.四、鼠标的属性和方法

++++立钻哥哥:鼠标的经常使用属性和方法:mousePositionGetMouseButtonDown()、GetMouseButtonUp()、GetMouseButton()、GetAxis(Mouse X)、GetAxis(Mouse Y)、GetAxis(Mouse ScrollWheel)

++++[mousePosition]:获得当前鼠标位置

++++[GetMouseButtonDown()]:鼠标按键按下的第一帧返回true

++++[GetMouseButtonUp()]:鼠标按键松开的第一帧返回true

++++[GetMouseButton()]:鼠标按键按下期间一直返回true

++++[GetAxis(Mouse X)]:获得一帧内鼠标在水平方向的移动距离

++++[GetAxis(Mouse Y)]:获得一帧内鼠标在垂直方向的移动距离

++++[GetAxis(Mouse ScrollWheel)]:获取鼠标滚轮的值

 

 

 

 

 

 

 

 

 

##4.二、碰撞器(Collider)

##4.二、碰撞器(Collider)

++4.二、碰撞器(Collider)

++++4.2.一、Collider碰撞器

++++4.2.二、加上碰撞器的游戏对象可响应的回调

 

 

###4.2.一、Collider碰撞器

###4.2.一、Collider碰撞器

++4.2.一、Collider碰撞器

++++立钻哥哥:当咱们建立一个Cube的时候会自带一个[Box Collider]这样的一个组件

 

++Collider

++++立钻哥哥:对于规则的游戏物体可使用引擎提供的碰撞器;对于一些大的场景,其碰撞网格能够由建模师提供

 

 

 

###4.2.二、加上碰撞器的游戏对象可响应的回调

###4.2.二、加上碰撞器的游戏对象可响应的回调

++4.2.二、加上碰撞器的游戏对象可响应的回调

++++立钻哥哥:加上碰撞器的游戏对象就能够响应系统写好的几个回调方法

++++[OnMouseDown()]:鼠标在Collider之上,按下鼠标,该事件即被触发

++++[OnMouseDrag()]:鼠标在Collider之上,当鼠标拖动时触发

++++[OnMouseEnter()]:移动鼠标进入Collider区域的时候,该事件被触发

++++[OnMouseExit()]:移动鼠标移出Collider区域的时候,该事件被触发

++++[OnMouseOver()]:鼠标处于Collider之上时,每帧都会调用该事件

++++[OnMouseUp()]:当鼠标弹起的时候,该事件被触发调用

++++[OnMouseUpAsButton()]:当鼠标在同一个Collider上,按下又弹起的状况下会触发调用该事件

 

 

 

 

 

 

 

 

 

##4.三、刚体(Rigidbody)

##4.三、刚体(Rigidbody)

++4.三、刚体(Rigidbody)

++++4.3.一、刚体的做用

++++4.3.二、经常使用属性

++++4.3.三、经常使用方法

 

 

###4.3.一、刚体的做用

###4.3.一、刚体的做用

++4.3.一、刚体的做用

++++立钻哥哥:在游戏中使用物体引擎能够真实的模拟出现实世界中的一些物理效果,例如重力,摩擦力,碰撞等

++++在Unity中使用的是PhysicX物理引擎,该引擎能够在3D世界中模拟须要的效果,它渲染的游戏画面很是的逼真,能够给玩家身临其境的感受

++++在Unity中要使一个物体受物理引擎的控制,主要是经过刚体组件来实现的

++++刚体的做用:重力、副作用力、阻力、外加力

 

++刚体的做用

++++[重力]:自由落体

++++[副作用力]:例如,与其它物体碰撞

++++[阻力]:受到阻力会慢慢中止运动

++++[外加力]:能够给物体施加一个外力

 

 

 

###4.3.二、经常使用属性

###4.3.二、经常使用属性

++4.3.二、经常使用属性

++++立钻哥哥:有了刚体组件(Rigidbody)就意味着有刚体类,手动的给物体添加力这就用到了刚体的一些属性和方法

++++[velocity]:刚体的速度

++++[angularVelocity]:刚体的角速度

++++[drag]:物体的阻力

++++[angularDrag]:物体的角阻力

++++[mass]:刚体的质量

++++[useGravity]:是否受重力影响

++++[isKinematic]:是否使用动力学

++++[freezeRotation]:是否冻结旋转

++++[collisionDetectionMode]:碰撞检测模式

++++[position]:刚体位置

++++[rotation]:刚体旋转

 

 

 

###4.3.三、经常使用方法

###4.3.三、经常使用方法

++4.3.三、经常使用方法

++++立钻哥哥:Rigidbody类经常使用方法:AddForce()、AddExplosionForce()、AddForceAtPosition()、AddRelativeForce()、AddRelativeForce()、AddRelativeTorque()、MovePosition()

++++[AddForce()]:给刚体添加一个力

++++[AddExplosionForce()]:给刚体添加一个力,模拟爆炸效果

++++[AddForceAtPosition()]:在指定的位置添加一个力

++++[AddRelativeForce()]:添加相对力

++++[AddRelativeTorque()]:添加相对力矩

++++[MovePosition()]:使用刚体移动物体到指定位置

 

 

 

 

 

 

 

 

 

##4.四、碰撞检测(Collider + Rigidbody)

##4.四、碰撞检测(Collider + Rigidbody)

++4.四、碰撞检测(Collider + Rigidbody)

++++4.4.一、碰撞的条件

++++4.4.二、碰撞分类

++++4.4.三、回调方法

 

 

###4.4.一、碰撞的条件

###4.4.一、碰撞的条件

++4.4.一、碰撞的条件

++++立钻哥哥:两个物体发生碰撞的时候会有一些炫酷的碰撞效果,像赛车游戏车辆相撞会有火花效果

++++好比王者荣耀,玩家能不能穿过防护塔,都用到碰撞检测

 

++两个物体发生碰撞的条件

++++条件1:发生碰撞的两个物体都必须带有[Collider]

++++条件2:发生碰撞的两个物体至少有一个带有物体[Rigidbody]

++++条件3:发生碰撞的两个物体必须有相对运动

 

 

 

###4.4.二、碰撞分类

###4.4.二、碰撞分类

++4.4.二、碰撞分类

++++立钻哥哥:碰撞分类:静态碰撞器[Static Collider]、刚体碰撞器[Rigidbody Collider]、运动学刚体碰撞器[isKinematic]

++++[静态碰撞器(Static Collider]:只有碰撞器没有刚体的物体;现象:保持静止或者轻微移动,如平面、树木

++++[刚体碰撞器(Rigidbody Collider]:具备刚体和碰撞器的物体;现象:彻底受物理引擎影响

++++[运动学刚体碰撞器(IsKinematic]:带刚体,且勾选“Is Kinematic”,此碰撞器不能添加力,只能经过transform移动

 

 

 

###4.4.三、回调方法

###4.4.三、回调方法

++4.4.三、回调方法

++++立钻哥哥:获取两物体碰撞,Unity提供了回调方法:OnCollisionEnter()、OnCollisionStay()、OnCollisionExit()

++++[OnCollisionEnter(Collision other)]:碰撞开始一瞬间被调用

++++[OnCollisionStay(Collision other)]:一直保持碰撞状态时被调用

++++[OnCollisionExit(Collision other)]:碰撞分离的一瞬间被调用

 

 

 

 

 

 

 

 

 

##4.五、触发事件(Collider + Rigidbody + Trigger)

##4.五、触发事件(Collider + Rigidbody + Trigger)

++4.五、触发事件(Collider + Rigidbody + Trigger)

++++4.5.一、物体的空间检测

++++4.5.二、触发器

++++4.5.三、回调方法

 

 

###4.5.一、物体的空间检测

###4.5.一、物体的空间检测

++4.5.一、物体的空间检测

++++立钻哥哥:判断一个角色是否在某个空间区域,除了直接计算Transform组件的position值外,还能够利用触发检测

 

 

 

###4.5.二、触发器

###4.5.二、触发器

++4.5.二、触发器

++++立钻哥哥:触发器事件执行的条件:两个物体上都要带碰撞器(Collider),至少带有一个刚体(Rigidbody),而且两物体至少有一个把触发器打开(IsTrigger

 

 

 

###4.5.三、回调方法

###4.5.三、回调方法

++4.5.三、回调方法

++++立钻哥哥:触发器的回调方法:OnTriggerEnter()、OnTriggerStay()、OnTriggerExit()

++++[OnTriggerEnter(Collider other)]:进入触发器的时候调用一次

++++[OnTriggerStay(Collider other)]:处于某个触发器之中的时候持续调用

++++[OnTriggerExit(Collider other)]:退出触发器的时候调用一次

 

++Trigger事件

++++立钻哥哥:事件传入参数[Collider other]中的Collider参数:attachedboundsenabledisTriggermaterialsharedMaterial

 

 

 

 

 

 

 

 

 

##4.六、物理材质(Physic Material)

##4.六、物理材质(Physic Material)

++4.六、物理材质(Physic Material)

++++4.6.一、物理材质的建立

++++4.6.二、物理材质属性设置

++++4.6.三、物理材质的使用

 

 

###4.6.一、物理材质的建立

###4.6.一、物理材质的建立

++4.6.一、物理材质的建立

++++立钻哥哥:在Project窗口中点击右键【Create => Physic Material】建立物理材质

++++物理材质用于调整:摩擦力和反弹力

 

 

 

###4.6.二、物理材质属性设置

###4.6.二、物理材质属性设置

++4.6.二、物理材质属性设置

++++立钻哥哥:物理材质属性:动态摩擦系数(Dynamic Friction)、静态摩擦系数(Static Friction)、反弹系数(Bounciness)、组合摩擦力(Friction Combine)、组合弹力(Bounce Combine

++++[Friction Combine(组合摩擦力)]:Average、Minimun、Multiply、Maxinum

 

 

 

###4.6.三、物理材质的使用

###4.6.三、物理材质的使用

++4.6.三、物理材质的使用

++++立钻哥哥:建立好的物理材质拖到“Box Collider”的“Material”

 

 

 

 

 

 

 

 

 

##4.七、射线(Ray)

##4.七、射线(Ray)

++4.七、射线(Ray)

++++4.7.一、射线碰撞简介

++++4.7.二、射线的建立

++++4.7.三、射线碰撞的应用

 

 

###4.7.一、射线碰撞简介

###4.7.一、射线碰撞简介

++4.7.一、射线碰撞简介

++++立钻哥哥:思考如何实现物体移动到鼠标点击的位置

 

++射线碰撞

++++立钻哥哥:Unity提供了射线机制,经过虚拟射线检测所碰撞到的物体

 

 

 

###4.7.二、射线的建立

###4.7.二、射线的建立

++4.7.二、射线的建立

++++立钻哥哥:建立射线:Ray ray = new Ray();

public Ray(Vector3 orgin, Vector3 direction);

++++[origin]:射线发射的原点

++++[direction]:射线发射的方向

Ray ray = new Ray(transform.position, transform.forward);

 

 

 

###4.7.三、射线碰撞的应用

###4.7.三、射线碰撞的应用

++4.7.三、射线碰撞的应用

++++立钻哥哥:使用Physics类的Raycast()方法实现射线碰撞检测功能

bool Raycast(Ray ray, out RaycastHit hitInfo);

++++[ray]:要发射的射线

++++[hitInfo]:碰撞信息

 

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

++++立钻哥哥:从主摄像机到鼠标点击位置建立一条射线

 

 

 

 

 

 

 

 

 

#第5讲:UGUI

#第5讲:UGUI

++++Unity企业内训(第5讲)http://www.javashuo.com/article/p-ncrckqey-kv.html

 

 

 

 

 

 

 

 

++立钻哥哥推荐的拓展学习连接(Link_Url)

立钻哥哥推荐的拓展学习连接(Link_Url)

++++立钻哥哥Unity 学习空间: http://blog.csdn.net/VRunSoftYanlz/

++++Unity企业内训(目录)http://www.javashuo.com/article/p-oefbctlf-mn.html

++++Unity企业内训(第1讲)http://www.javashuo.com/article/p-ehlblkrj-mc.html

++++Unity企业内训(第2讲)http://www.javashuo.com/article/p-tiecmlwc-ma.html

++++Unity企业内训(第3讲)http://www.javashuo.com/article/p-mlpucjnv-ma.html

++++Unity企业内训(第4讲)http://www.javashuo.com/article/p-vfalurum-kz.html

++++VR实验:以太网帧的构成http://www.javashuo.com/article/p-fnfhdcgt-bp.html

++++FrameVR示例V0913http://www.javashuo.com/article/p-xnlrngai-cw.html

++++FrameVR示例V1003http://www.javashuo.com/article/p-ztazxpkv-bd.html

++++计算机组成原理(教材篇)http://www.javashuo.com/article/p-sejaldpf-kr.html

++++HTC_VIVE开发基础http://www.javashuo.com/article/p-mhcdmelt-bt.html

++++Oculus杂谈http://www.javashuo.com/article/p-unmgvyjw-ce.html

++++Oculus安装使用http://www.javashuo.com/article/p-ulvvimkb-cr.html

++++VRTK杂谈http://www.javashuo.com/article/p-gsryrkjk-eb.html

++++VRTK快速入门(杂谈)http://www.javashuo.com/article/p-bgvfnmia-cm.html

++++VRTK官方示例(目录)http://www.javashuo.com/article/p-dsnjffvq-ea.html

++++VRTK代码结构(目录)http://www.javashuo.com/article/p-wfilzqyd-es.html

++++VRTK(SceneResources)http://www.javashuo.com/article/p-ryptqvzl-hm.html

++++VRTK_ControllerEventshttp://www.javashuo.com/article/p-sciqvywx-hv.html

++++VRTK_InteractTouchhttp://www.javashuo.com/article/p-ggucvtwz-hq.html

++++Unity5.x用户手册http://www.javashuo.com/article/p-ufnzpmga-s.html

++++Unity面试题ABChttp://www.javashuo.com/article/p-mwacxwca-gm.html

++++Unity面试题Dhttp://www.javashuo.com/article/p-wuwcrclr-s.html

++++Unity面试题Ehttp://www.javashuo.com/article/p-hmabbtmc-ba.html

++++Unity面试题Fhttp://www.javashuo.com/article/p-olslkfao-cq.html

++++Cocos2dx面试题http://www.javashuo.com/article/p-daozmsii-cz.html

++++Lua快速入门篇(Xlua拓展):http://www.javashuo.com/article/p-rrszijom-cm.html

++++Lua快速入门篇(XLua教程):http://www.javashuo.com/article/p-pduvmusb-ho.html

++++Lua快速入门篇(基础概述)http://www.javashuo.com/article/p-shernvtt-u.html

++++框架知识点http://www.javashuo.com/article/p-eufbowgf-u.html

++++游戏框架(UI框架夯实篇)http://www.javashuo.com/article/p-cvemoigb-cu.html

++++游戏框架(初探篇)http://www.javashuo.com/article/p-zfpoilbc-hy.html

++++设计模式简单整理http://www.javashuo.com/article/p-rngqugib-hg.html

++++专题:设计模式(精华篇)http://www.javashuo.com/article/p-nbohnaya-hw.html

++++U3D小项目参考https://blog.csdn.net/vrunsoftyanlz/article/details/80141811

++++Unity案例(Vehicle)http://www.javashuo.com/article/p-wxnfscgy-dy.html

++++UML类图http://www.javashuo.com/article/p-sxberuew-bm.html

++++Unity知识点0001http://www.javashuo.com/article/p-ryvdxxjr-ep.html

++++Unity知识点0008http://www.javashuo.com/article/p-kxgstxls-gu.html

++++U3D_Shader编程(第一篇:快速入门篇)http://www.javashuo.com/article/p-kyppgrac-gz.html

++++U3D_Shader编程(第二篇:基础夯实篇)http://www.javashuo.com/article/p-qkyowtli-hv.html

++++Unity引擎基础http://www.javashuo.com/article/p-beommoeb-ka.html

++++Unity面向组件开发http://www.javashuo.com/article/p-eigmuvut-dt.html

++++Unity物理系统http://www.javashuo.com/article/p-nqvvciwv-kd.html

++++Unity2D平台开发http://www.javashuo.com/article/p-ycaagdtj-hs.html

++++UGUI基础http://www.javashuo.com/article/p-rukxwckw-mc.html

++++UGUI进阶http://www.javashuo.com/article/p-wcatruhq-gt.html

++++UGUI综合http://www.javashuo.com/article/p-dkccmqii-gg.html

++++Unity动画系统基础http://www.javashuo.com/article/p-mbrdouxy-dq.html

++++Unity动画系统进阶http://www.javashuo.com/article/p-aqaqpbkh-bp.html

++++Navigation导航系统http://www.javashuo.com/article/p-dswwllas-t.html

++++Unity特效渲染http://www.javashuo.com/article/p-ckojjyfj-bp.html

++++Unity数据存储http://www.javashuo.com/article/p-bvlzynso-m.html

++++Unity中Sqlite数据库http://www.javashuo.com/article/p-ejutsbxl-ca.html

++++WWW类和协程http://www.javashuo.com/article/p-dbwmhsav-cy.html

++++Unity网络http://www.javashuo.com/article/p-sqrlntgh-dw.html

++++C#事件http://www.javashuo.com/article/p-zmwruvql-gm.html

++++C#委托http://www.javashuo.com/article/p-uozpymaf-gh.html

++++C#集合http://www.javashuo.com/article/p-sfqfdqsf-ex.html

++++C#泛型http://www.javashuo.com/article/p-xrttqngo-ee.html

++++C#接口http://www.javashuo.com/article/p-vhlfplgv-dm.html

++++C#静态类https://blog.csdn.net/vrunsoftyanlz/article/details/78630979

++++C#中System.String类http://www.javashuo.com/article/p-olslkfao-cq.html

++++C#数据类型http://www.javashuo.com/article/p-hmabbtmc-ba.html

++++Unity3D默认的快捷键http://www.javashuo.com/article/p-wuwcrclr-s.html

++++游戏相关缩写http://www.javashuo.com/article/p-mwacxwca-gm.html

++++UnityAPI.Rigidbody刚体http://www.javashuo.com/article/p-phaztrtw-w.html

++++UnityAPI.Material材质http://www.javashuo.com/article/p-ntyoqcng-q.html

++++UnityAPI.Android安卓http://www.javashuo.com/article/p-fyyfgkck-q.html

++++UnityAPI.AndroidJNI安卓JNIhttp://www.javashuo.com/article/p-kvxjsnzf-w.html

++++UnityAPI.Transform变换http://www.javashuo.com/article/p-bfgrrhxl-cq.html

++++UnityAPI.WheelCollider轮碰撞器http://www.javashuo.com/article/p-smnaoooi-cn.html

++++UnityAPI.Resources资源http://www.javashuo.com/article/p-utqnokva-bu.html

++++JSON数据结构http://www.javashuo.com/article/p-dljbtddn-g.html

++++CocosStudio快速入门http://www.javashuo.com/article/p-qldbaqqa-v.html

++++立钻哥哥Unity 学习空间: http://blog.csdn.net/VRunSoftYanlz/

--_--VRunSoft:lovezuanzuan--_--