U3d之物理引擎(上)

如果对你有帮助,请做一棵蒲公英,让知识随风飘荡留在人的心里。

1. 人机交互

为什么说物理引擎要说起人机交互呢?假如我们在玩游戏的时候,要控制的可能是人物,飞机,汽车等游戏对象,我们需要跟电脑进行交互,告诉电脑我们想要进行什么样的骚操作,这个时候电脑才会去按我们的想法去操作,然后才会触发一些现象,比如说物理现象。

键盘:
Input类就是u3d引擎提供给我们的人与系统操作的接口,这个类能读取你的按键,你的点击,你的触控或者加速感应数据等等,因为input类里的方法比较多,我们暂时说几个常用的方法来加深下理解,Input.GetKey顾名思义就是input类的得到按键方法,在键按下期间返回true,对应的还有GetKeyDown,GetKeyUp,这几个英文单词组合很简单,看意思就能明白这个方法是做什么的,分别是按下这个键,抬起这个键所触发的事情。
除此之外还有两个单词非常重要,也是经常用到的Horizontal,Vertical,如果看到这个不知道这个单词的小伙伴一定要自己动手查,这样印象才最深刻,掌握程序要求必须会倒背如流不能出错,他们分别代表水平虚拟按键与竖直虚拟按键,你可以在Edit->Project->Settings->Input打开输入管理器看他们的相关的属性,切记不懂单词就查,之后就记忆,这样水平就会在不知不觉中提高,对新手来说会大大的减少你阅读英文API的难度。
大多数Windows窗体程序都通过处理键盘事件来处理键盘输入,通过指定的按键检测按键不同的状态。
比如说我想得到水平或者数值虚拟轴(Horizontal,Vertical)的值,我可以用Input.GetAxis(“Horizontal”)的方法,那么我们看一下这个方法的返回值是什么呢?
float类型没错,所以我们可以用一个值来接收返回值 float hor = Input.GetAxis(“Horizontal”);
鼠标
与键盘原理相同,我们也列举一些鼠标属性的一些常用方法,mousePosition得到鼠标当前的位置(在实际应用中需要转换坐标轴,因为我们所看到的显示器是二维的只有X,Y,而U3D引擎中的3D场景是三维的,如果直接告诉计算机得到鼠标的位置,计算机是不知道你的Z轴是多少的,这样一说就懂了吧,至于这个问题我们一会儿再说),GetMouseButtonDown鼠标按下,GetMouseButtonUp鼠标抬起,GetMouseButton鼠标按下期间,GetAxis(“Mouse X”) 得到鼠标在水平方向的移动距离(一帧),GetAxis(“Mouse Y”)得到鼠标在数值方向的移动距离(一帧),GetAxie(“Mouse ScrollWheel”)获取滚轮的值。

2. 碰撞器
Collider碰撞器!!!
当我们在场景创建游戏对象后,引擎会自动为物体加上碰撞器组件的,主要功能是进行碰撞检测的。对于不同形状的游戏物体当然碰撞器的形状也是不一样的,要不然不成碰瓷了么?我们来看一下引擎给我们提供了哪些方法来使用,OnMouseDown鼠标在游戏物体上,按下则触发,OnMouseDrag鼠标在游戏物体上,拖动则触发,OnMouseEnter鼠标进入碰撞体区域就被触发,OnMouseExit鼠标离开碰撞体区域就被触发,OnMouseOver鼠标在游戏物体上每一帧都会触发,OnMouseUp当鼠标抬起会被触发,还有最后一个OnMouseUpAsButton当鼠标在同一个碰撞体上按下又抬起的时候就会触发,是不是看了英文就明白这个方法了呢?碰撞方法
3. 刚体组件
在游戏中使用物理引擎的好处就是可以模拟出现实世界中的一些物理效果,比如说重力,摩擦力,碰撞等让人感觉真实,U3D使用的是PhysX物理引擎!
给游戏对象添加RigidBody组件后,你可以看到一些引擎给我们提供的一些参数,同样是不懂的一定要查!我们举一些经常用的属性来理解一下,velocity刚体的速度,angularVelocity刚体的角速度 ,drag物体的阻力,angularDrag物体的角阻力,mass刚体的质量,useGravity是否受重力影响,isKinematic是否使用动力学,freezeRotation是否冻结旋转,collisionDetectionMode碰撞检测模式,position刚体位置,rotation刚体旋转。
刚体又有哪些常用的方法呢?AddForce给刚体添加一个力,AddExplosionForce给刚体添加一个力,模拟爆炸效果,AddForceAtPosition在指定的位置添加一个力,AddRelativeForce添加相对力,AddRelativeTorque添加相对力矩,MovePosition使用刚体移动物体到指定位置。

4. 碰撞事件
静态碰撞器Static Collider:只有碰撞器没有刚体的物体,保持静止:树木等。
刚体碰撞器Rigidbody Collider:具有刚体和碰撞器的物体;完全受物理引擎影响。
运动学刚体碰撞器:带刚体,且勾选Is Kinematic,此碰撞器不能添加力,只能通过transform移动。

发生碰撞的条件
1.发生碰撞的两个物体必须带有collider
2.发生碰撞的两个物体至少有一个带有刚体
3.发生碰撞的两个物体必须有相对运动(要碰在一起)
碰撞事件过程

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值