博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
【转】通过制作Flappy Bird了解Native 2D中的RigidBody2D和Collider
阅读量:6862 次
发布时间:2019-06-26

本文共 1144 字,大约阅读时间需要 3 分钟。

作者:,出处: 欢迎转载,也请保留这段声明。如果你喜欢这篇文章,请点。谢谢!

 

 

引子

在第一篇文章我已经讲过了一些关于刚体和碰撞的关系,这次我们就通过Flappy Bird这个事例来讲解一下刚体和碰撞体在游戏中的具体应用。相关代码可以参考。

认识RigidBody

 

 

  1. 当RigidBody2D的质量属性被设置为0时,刚体的质量变为无限大,此时刚体相当于静态刚体,永远一动不动。但是在Unity中你是无法把一个RigidBody2D的质量设置为0的,所以,当你想创建一个静态刚体时,只需要创建碰撞器,而不需要创建RigidBody2D。
  2. 当我们勾选了is Kenamatic选项时,这个RigidBody2D就不再受物理引擎控制,我们这时候需要通过Transform来控制RigidBody2D的移动,这个选项经常在脚本里对其进行设置。

注意当Gravity Scale设置为0时,该刚体不再受重力影响。

认识Collider2D

在Add Component选项中点击添加Physics2D中的Collider2D即可添加一个碰撞器,碰撞器有以下三种:

  • BoxCollider2D:盒状碰撞器,一般为矩形。
  • CircleCollider2D:圆形碰撞器。
  • PolygonCollider2D:多边形碰撞器

我们在为一个2D GameObject添加一个Collider时,这个Collider会自动选择最合适的大小,但是你可以使用Shift+鼠标左键对Collider的边界进行调整。在多边形中,还可以通过Ctrl+鼠标左键来删除某个多边形顶点。

当然,针对同一个刚体,我们可以为这个刚体添加多个碰撞提来构造更加复杂的碰撞结构,在官方的岩石Demo – 2D Platformer中你可以看到相应的事例。

另外,我们可以通过将动画和刚体的运动结合的方式来构建更加有趣的运动效果,通过Transform的变换和通过RigidBody的变换不一定非得是必取其一的,关于动画的知识可以看看我的这篇博客:。

关于Is Trigger

如果对一个碰撞器勾选了Is Trigger选项,它就不会与其他没有勾选Is Trigger的碰撞器发生刚体碰撞,而会发生“Trigger 碰撞”,也就是说,这时碰撞时发送的消息是Trigger消息,而不是Collision消息,相应地在脚本中我们要对OnTriggerEnter进行重载,而不是对OnCollisionEnter进行重载。

下图对Collision和Trigger进行了总结,在分别勾选某些属性时,都会发送哪些消息:

 

 

 

系列文章

作者:王选易

转载于:https://www.cnblogs.com/mimime/p/6980055.html

你可能感兴趣的文章
SEH结构化异常处理
查看>>
OGG_GoldenGate数据迁移三进程Extract / Dump / Relicat(案例)
查看>>
OAF_文件系列11_实现OAF读写Excel包JXL和POI的区别(概念)
查看>>
未整理:MediaPlayer(1,2)
查看>>
c# 串口发送接收数据
查看>>
每周一荐:Objective-C的开源开发环境GNUstep
查看>>
10-C语言循环结构(一)
查看>>
python学习笔记--基础概要
查看>>
2018/11/28 scp eve-ng
查看>>
SQL WITH NOCHECK
查看>>
POJ3090 Visible Lattice Points
查看>>
证明积累
查看>>
Linux系统PHP 安装xdebug调试扩展
查看>>
Swiper 中文API手册(转自挨踢前端)
查看>>
数组常用api
查看>>
File i/o2
查看>>
带参有返回值方法-求1!+2!+3!+4!+5!
查看>>
How to take partial screenshot with Selenium WebDriver in python
查看>>
关于学习
查看>>
ntp配置中的tinker参数
查看>>