1.2D Physics Overview

1.2D Physics游戏对象和3D Physics游戏对象可共存在一个场景,但是它们不能相互反应(interact with each other)。

2.2D Physics只在x和y轴上有反应,z轴怎样改变都是0.

3. 要设置Physic2D的各项参数见下:

需要注意的是Rigidbody2D的gravity是gravity scale,默认值在上面的图里设好,然后在rigidbody2D的设比例,比如1就是100%,0.1就是10%。

4.2D Physics有6种Collider,分别是Circle,Box,Edge,Polygon,Capsule,Composite。

前四种的作用如下:

2.Rigidbody 2D

1.只有加了rigidbody2d组件的sprite可以动,只有再添加collider2d的才可以与场景互动。

2.Mass为质量。质量小的推质量大的就比较难推(两个都有collider)。

3.Linear Drug就像空气阻力,移动时会慢慢停止。

4.Angular是角阻力,原地旋转会慢慢停止。

5.Gravity Scale已在上面解释,是重力比率。

6.Fixed Angle是该对象可移动,但不可旋转。(掉在一个斜面上就直直滚下去了,本身不会旋转)

7.Is Kinematic勾选时,该对象不受力的影响(包括重力等),可用脚本控制position和rotation的移动。比如有一个platform,我们勾选了kinematic,在脚本里控制移动它的transform,但因为该platform还是需要和其它对象互动,比如小球,那它就要有2d collider。

8.Interpolate移动平滑内插值,一般用于对象运动慢慢生涩/抖动(jerky),比如刹车?选择interpolate移动的顺滑程度取决于上一帧;选择extrapolate顺滑程度取决于下一帧(就像Adventure Game里Player的移动一样)。

9.Sleeping Mode睡眠状态,Start Asleep初始是睡眠的,会被其他碰撞(collisions)唤醒。Start Awake 初始是醒着的。Never Sleep尽量别选这个,对性能有影响。

10.Collision Detection碰撞检测,一般都选Continuous。

Discrete:将碰撞检测设置为离散时,如果物体移动速度足够快,则在物理更新期间,具有刚体2D和碰撞2D的GameObjects可以相互重叠或通过。 碰撞接触只在新的位置产生。

Continuous:当碰撞检测设置为连续时,具有刚体2D和碰撞2D的GameObjects在更新期间不会彼此通过。 相反,Unity计算任何Collider 2D的第一个影响点,并在那里移动GameObject。 请注意,这比离散占用更多的CPU时间。(如果没那么快的话可以选Discrete?)

3.Collider 2D

1.Edge Collider和Polygon Collider有点像,都是多边形检测。但Polygon的是封闭的,Edge用于表面是开口的。

2.是否勾选Is Trigger的区别:来源http://www.cnblogs.com/infly123/p/3920393.html

trigger被勾选时就是一个检测器,可以被穿过但会记下状态(比如Zoombunny的外圈spheir collider就是勾选了is trigger用来检测敌人进入攻击范围。内圈的capsule collider不勾选不让其他物体穿过)。

3.Material。用来调整发生碰撞时2D物体对象之间的碰撞和反弹。2D的Material和3D的很不一样,2D的拼写为Physics Material(有s)。Material都是内搭在系统里的,可以在Assets→Creat→Physics Material 2D选择。制作一个木球和一个冰平面所需要的材质就不一样,可以选择了之后拖入到Material框里。

4.给sprite添加collider后会根据sprite的边缘自动调整大小形状,如果不满意,可以拖动collider边缘线上的小绿点进行调整。(就像Survival Shooter里调整collider一样)

5.Edge和Polygon Collider可以摁住ctrl键点绿点(该段边缘线会变成红色)来取消修改边缘。

6.一个对象可以只有collider没有rigidbody(比如地形上的东西)。但要两者react必须最少一个有rigidbody。

4.Hinge Joint2D

好复杂,暂时用不到,先不学了。用在像弹簧,弹簧门开合,用绳子垂下来的东西的移动等。

5.Area Effector2D

组件Area Effector2D必须添加在同时有Collider2D的对象上。比如梦露经典的白裙子被吹起,那个吹气的地网区域在游戏里就可以用Area Effector2D来作为一个对其他对象施加力的区域。

比如下面这个金币被吹起的游戏,金币的组件为

吹风机的组件为

注意要使用Area Effector它的Collider组件必须勾选Used By Effector,如上图。同时Collider必须勾选is trigger让其他对象进入该区域以受力。同时受力对象也必须有Collider组件,如上图的金币。

组件设置:

Collider Mask:对哪个Mask产生作用。

Force Direction力的方向,比如上面是向右和向上(范围从0~359.99),逆时针方向,0为右,90为向上,and so on。注意这个方向是World Space的,即把挂这个组件的对象旋转成什么样,它的施力方向也是在这里设置好的。(教程里是这样说的,现在Unity好像已经改了,可以设置Local或World了)

Force Magnitude:施加的力量的大小。

Force Variation:施力的范围变化。会在For Magnitude的数值上随机一个力施加。比如Magnitude设置为100,Variation设置为20,则在100到120内随机添加一个力。如果Variation为负,比如-20,则是80到100内随机添加一个力。

Drag & Angular Drag:施加的阻力和角阻力的方向。(比如上面图的向上吹的区域,如果Augular Drag设为10,金币被吹起离开这个区域后会全部向右下落。如果为10则随机方向下落)。

Force Target:如果选rigidbody则是作用于整个物体,物体受力时不旋转。如果选collider则会一边移动一边旋转(见视频效果)。

6.Distance Joint2D

让组件所在的对象围绕着另一个对象(或一个点)做运动。比如一个点(在组件里设置位置)加一个球(拥有Distance Joint2D组件),则这个球就像钟摆一样绕着这个点运动。即使没有铰链和挂点的情况下。

7.Point Effector2D

点效应器施加在一个点上施加力影响一个范围。比如一个点爆炸把范围内的一堆金币炸开,比如一个黑洞把一定范围内的星体全部吸入等。和Area Effector的设置几乎一样,比如被反应对象也要有collider,自身collider要勾选两个选项等。

不同的是,一般Point Effector2D所在的对象都会挂上脚本,用SetActive true or false来控制Point Effector2D,比如摁下空格,就true,然后炸一次。

至于是炸开还是吸入则是For Magnitude的值是正还是负。(教程里的改变设置来实现各种效果很有趣,值得一看)/

8.Sliding & Bouncing in 2D

主要是讲Physics Material 2D比如bouncing(橡皮球的弹跳效果),sliding(冰面的滑动效果)。

Project下Creat选Physics Material 2D,然后在Assets文件夹里会新建一个材质,改名成自己想要的后调整参数。

设置好需要的值之后,就把该Material拖入到对象的Collider里的Material框里就可以了。

完毕。

Unity 3D 官方教程—— 2D Physics系列 学习记录相关推荐

  1. Unity 3D官方教程——Adventure Game学习记录

    1.Interactable System: 1.Picture Interactable:Player走到SecurityRoom墙前的那张画 2.Fish Interactable鱼档前的交互 3 ...

  2. Unity 3D官方教程——Tanks!学习记录

    1.游戏界面基础设置 先在官方资源商店导入Tank!的所有资源(怎样导入已在Survival Shooter中说明),新建_Scenes文件夹,将新场景命名为Main并保存. 删除Hierarchy下 ...

  3. Unity 3D为策略游戏创建地图学习教程

    MP4 |视频:h264,1280×720 |音频:AAC,44.1 KHz,2 Ch 语言:英语+中英文字幕(根据原英文字幕机译更准确) |时长:30节课(7h 42m) |大小:5 GB 含项目文 ...

  4. 黑马程序员最新版JavaWeb基础教程最后的案例学习记录

    黑马程序员最新版JavaWeb基础教程最后的案例学习记录这里写自定义目录标题 调试中我遇到的问题 调试中我遇到的问题 若db1报错: 则 改成自己的数据库名称 web.xml报错:则用这一段代码 &l ...

  5. U3d官方教程——2D UFO

    原教程地址https://unity3d.com/cn/learn/tutorials/s/2d-ufo-tutorial 这篇教程将会带你制作一个简单的2DUFO游戏,从而使你了解到许多关于unit ...

  6. Windows网络编程案例教程-董相志 学习记录 第一个网络程序hostent

    <Windows网络编程案例教程>-董相志 学习记录 第一个网络程序hostent 第一章 网络编程概述 1.3.5第一个网络程序--hostent 对主机的名称和地址解析 WinSock ...

  7. Unity XLua 官方教程学习

    一.Lua 文件加载 1. 执行字符串 using UnityEngine; using XLua;public class ByString : MonoBehaviour {XLua.LuaEnv ...

  8. 观看M-studio的unity中文教程(开发一款移动设备运行的2D游戏)学习记录

    第一部分:PlayerManger中的跳跃方法,相比较之下跳跃手感会更好 //属性public float Speed; //速度private float InputX; //x轴输入public ...

  9. unity 3D RPG教程(一)

    目录 声明 1:Create Project 2:Build Level 3:PolyBrush 发挥创意构建场景 4:Navigation 智能导航地图烘焙 5:MouseManager 鼠标控制人 ...

最新文章

  1. loadrunner支持https协议的操作方法-经验总结
  2. CCSP-防火墙学习笔记第6章
  3. linux python wps doc 转 txt_耗时一周尝试踩坑,整理了一些Python实用知识点
  4. html 控制文字的标签,html里面有一个控制文字滚动的标签marquee,比较有用。
  5. GitHub优秀移动开源项目大集合
  6. C语言 — 转义字符
  7. 学习笔记-模块之xml文件处理
  8. 施耐德 m340 编程手册_PLC模拟量的通用转换原理以及编程方法
  9. 做Gabor滤波器图片
  10. 从开题报告到毕业论文|软件工具大公开
  11. RO-data、RW-data、ZI-data的解释
  12. 计算机色颜色有几种,电脑显示器怎么选?10、8、6bit不同色深都有哪些区别?...
  13. PyCharm 创建纯Python项目
  14. css动画(transition,translate,rotate,scale)
  15. 模糊查询银行卡号mysql_mysql模糊查询
  16. 【配送路径规划】基于matlab蚁群算法求解配送路径最短问题【含Matlab源码 2222期】
  17. 计算机专业毕业设计致谢,计算机本科毕业设计致谢
  18. 标签云制作流程-使用wordar
  19. 2.12 FreeRTOS_RingBuff 环形缓存数组的使用
  20. 机器学习入门之PCA与ICA

热门文章

  1. Pycharm自定义快捷键背景图片
  2. 全球最赚钱的十款游戏,你玩过吗?
  3. C语言 计算猴子摘桃数目(多种方法)
  4. 2009年6月6日大学散伙饭--maybe大学最后一记
  5. Centos7清空历史命令的方法(清空history)
  6. python求平均工资_math - 在Python中计算算术平均值(一种平均值)
  7. 如果x≥0,则,否则。编写程序,输入一个整数x,计算后输出对应的y值。
  8. byte字节流和bitmap互相转换
  9. 微信小程序startLocationUpdateBackground()简单实现骑手配送位置
  10. 十二个“一”所代表的树