Unity 物理引擎

Paste_Image.png

一、引言

物理引擎是一个很大的标题,在这里,我只记录一些我们较为常用的一些东西,其他的一些深入的东西,随着我们的开发,会慢慢接触到,也会学习到,并且其中一些根本的东西也都是一样的。

二、什么是物理引擎

物理引擎通过为刚性物体赋予真实的物理属性的方式来计算运动、旋转和碰撞反映。
简单地说,就像是什么是Unity引擎一样,Unity是制作游戏的一款引擎,而物理引擎则是用于制作物理效果的引擎,也可以说是一种通用的方法。

三、碰撞器(Collider)

1.什么是碰撞器

碰撞器,根据名字我们就可以猜到,有了碰撞器,游戏物体就可以产生碰撞。没错,碰撞器就是一个让游戏物体可以产生碰撞效果的组件,它描述了物体可被碰撞的边界,以及碰撞过程中相互影响效果。我们可以在需要产生碰撞效果的游戏物体中添加碰撞器,使其能够产生碰撞。


Paste_Image.png

2.分类

根据形状和效果分类:

  • 盒碰撞器(Box Collider)�:
  • 球碰撞器(Sphere Collider)�:
  • 胶囊碰撞器(Capsule Collider)�:
  • 车轮碰撞器(Wheel Collider):专用于车轮
  • 网格碰撞器(Mesh Collider)
  • 地形碰撞器(Terrain Collider)
  • 复合碰撞器(Compound Colliders)

根据性能消耗分类(从低到高):

  • Sphere Collider
  • Capsure Collider
  • Box Collider
  • Mesh Collider

3.碰撞器主要参数

Paste_Image.png

IsTrigger 是否作为触发器使用(勾选后则没有碰撞效果)
Material 使用的物理材质
Center 碰撞器的坐标
Size 碰撞器的大小
Edit Collider 手动调整碰撞器的大小

这里主要要说明的是IsTrigger,这个表示碰撞器碰撞是否为触发,,简单解释就是,碰撞了之后是否产生物理效果,如果勾选,则表现为触发,也就是不产生物理效果,关于物理效果的产生,我们在记录刚体的时候会进行记录。

4.物体发生碰撞的必要条件

  1. 碰撞双方必须具有碰撞器,且(IsTrigger 为false)
  2. 运动一方必须具有刚体或者角色控制器

5.处理碰撞和触发

学习了碰撞器,我们知道物理引擎中我们可以使用它来让游戏物体之间产生碰撞,那么我们要怎么才能自己处理碰撞呢,这里Unity给了我们几个回调函数;

  • 当碰撞发生时的回调函数
当进入碰撞
void OnCollisionEnter(Collision collision)
当逗留碰撞
void OnCollisionStay(Collision collision)
当退出碰撞
void OnCollisionExit(Collision collision)

Collision就是碰撞信息类,它可以获取到是谁撞了我
回调函数:就是你写的一个函数,放在那,不是由你写的程序去调用而是系统自动调用你
的函数,这就是回调函数,回调函数即然是让系统调用的,所以你就必须按系统给定的原
形来实现程序(简单了解下就好了)

  • 触发器触发时产生的回调函数
进入触发器
void OnTriggerEnter(Collider other)
当逗留触发器
void OnTriggerStay(Collider other);
退出触发器
void OnTriggerExit(Collider other);

Other就是碰撞到当前对象的游戏物体的碰撞器

四、刚体(Rigidbody)

1.什么是刚体

物理引擎通过为刚性物体赋予真实的物理属性的方式来计算运动、旋转和碰撞反映。这是百度给出的物理引擎解释,那么其中的刚性物体,在Unity中的体现就是刚体组件啦。

2.分类

  1. 普通刚体(影响自己也影响其他物体)
  2. 运动学刚体(Is Kinematic为 true, 自己不受物理引擎的驱动,但是会影响其他刚体)

3.主要参数

Paste_Image.png

Mass 质量
Drag 位移阻力
Angular Drag 角阻力
Use Gravity 是否受重力影响
Is Kinematic 是否为运动学刚体
Interpolate 平滑物理运行的插值类型(枚举)
Collision Detection 碰撞检测方式(枚举)
Constraits 冻结位置和旋转

4.如何使刚体运动

判断游戏物体是否产生位移,只要看他的Transform组件的position是否变化即可(注意:但游戏物体为子类时,要看其最上层父类对象的Transform组件的position),所以都可以强制改变其Transform.position来改变,但我们这里讲的是物理引擎,所以不记录该方法,只记录使用刚体组件的方法。

对于运动学刚体(Is Kinematic为True):
此类刚体不受物理引擎的印象,所以只能用刚体中的MovePosition(Vector3 v)来使其移动。

对于非运动学刚体:
我们可以给刚体添加力,使用AddForce方法,或者给其一个速度来使其位移,赋值给velocity属性。

这里记录的是改变物体position的方法,还有一些改变物体rotation的方法,在这里就不进行讲解了。

五、结束语

写了几篇博客,发现有些东西,写出来,理解更加深刻了,也让自己的学习和记忆更加深刻,以后要继续坚持, 为了成为一个大牛。文章写得比较粗糙,如有错误,欢迎指正,也欢迎各路英雄互相研究学习。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 204,732评论 6 478
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 87,496评论 2 381
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 151,264评论 0 338
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,807评论 1 277
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,806评论 5 368
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,675评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 38,029评论 3 399
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,683评论 0 258
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 41,704评论 1 299
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,666评论 2 321
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,773评论 1 332
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,413评论 4 321
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 39,016评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,978评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,204评论 1 260
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 45,083评论 2 350
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,503评论 2 343

推荐阅读更多精彩内容