Unity 3D 官方教程—— 2D Physics系列 学习记录
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系列 学习记录相关推荐
- Unity 3D官方教程——Adventure Game学习记录
1.Interactable System: 1.Picture Interactable:Player走到SecurityRoom墙前的那张画 2.Fish Interactable鱼档前的交互 3 ...
- Unity 3D官方教程——Tanks!学习记录
1.游戏界面基础设置 先在官方资源商店导入Tank!的所有资源(怎样导入已在Survival Shooter中说明),新建_Scenes文件夹,将新场景命名为Main并保存. 删除Hierarchy下 ...
- Unity 3D为策略游戏创建地图学习教程
MP4 |视频:h264,1280×720 |音频:AAC,44.1 KHz,2 Ch 语言:英语+中英文字幕(根据原英文字幕机译更准确) |时长:30节课(7h 42m) |大小:5 GB 含项目文 ...
- 黑马程序员最新版JavaWeb基础教程最后的案例学习记录
黑马程序员最新版JavaWeb基础教程最后的案例学习记录这里写自定义目录标题 调试中我遇到的问题 调试中我遇到的问题 若db1报错: 则 改成自己的数据库名称 web.xml报错:则用这一段代码 &l ...
- U3d官方教程——2D UFO
原教程地址https://unity3d.com/cn/learn/tutorials/s/2d-ufo-tutorial 这篇教程将会带你制作一个简单的2DUFO游戏,从而使你了解到许多关于unit ...
- Windows网络编程案例教程-董相志 学习记录 第一个网络程序hostent
<Windows网络编程案例教程>-董相志 学习记录 第一个网络程序hostent 第一章 网络编程概述 1.3.5第一个网络程序--hostent 对主机的名称和地址解析 WinSock ...
- Unity XLua 官方教程学习
一.Lua 文件加载 1. 执行字符串 using UnityEngine; using XLua;public class ByString : MonoBehaviour {XLua.LuaEnv ...
- 观看M-studio的unity中文教程(开发一款移动设备运行的2D游戏)学习记录
第一部分:PlayerManger中的跳跃方法,相比较之下跳跃手感会更好 //属性public float Speed; //速度private float InputX; //x轴输入public ...
- unity 3D RPG教程(一)
目录 声明 1:Create Project 2:Build Level 3:PolyBrush 发挥创意构建场景 4:Navigation 智能导航地图烘焙 5:MouseManager 鼠标控制人 ...
最新文章
- loadrunner支持https协议的操作方法-经验总结
- CCSP-防火墙学习笔记第6章
- linux python wps doc 转 txt_耗时一周尝试踩坑,整理了一些Python实用知识点
- html 控制文字的标签,html里面有一个控制文字滚动的标签marquee,比较有用。
- GitHub优秀移动开源项目大集合
- C语言 — 转义字符
- 学习笔记-模块之xml文件处理
- 施耐德 m340 编程手册_PLC模拟量的通用转换原理以及编程方法
- 做Gabor滤波器图片
- 从开题报告到毕业论文|软件工具大公开
- RO-data、RW-data、ZI-data的解释
- 计算机色颜色有几种,电脑显示器怎么选?10、8、6bit不同色深都有哪些区别?...
- PyCharm 创建纯Python项目
- css动画(transition,translate,rotate,scale)
- 模糊查询银行卡号mysql_mysql模糊查询
- 【配送路径规划】基于matlab蚁群算法求解配送路径最短问题【含Matlab源码 2222期】
- 计算机专业毕业设计致谢,计算机本科毕业设计致谢
- 标签云制作流程-使用wordar
- 2.12 FreeRTOS_RingBuff 环形缓存数组的使用
- 机器学习入门之PCA与ICA
热门文章
- Pycharm自定义快捷键背景图片
- 全球最赚钱的十款游戏,你玩过吗?
- C语言 计算猴子摘桃数目(多种方法)
- 2009年6月6日大学散伙饭--maybe大学最后一记
- Centos7清空历史命令的方法(清空history)
- python求平均工资_math - 在Python中计算算术平均值(一种平均值)
- 如果x≥0,则,否则。编写程序,输入一个整数x,计算后输出对应的y值。
- byte字节流和bitmap互相转换
- 微信小程序startLocationUpdateBackground()简单实现骑手配送位置
- 十二个“一”所代表的树