U3D physics总结

物理系统基于collider, 没有collider的物体不会发生任何主动和被动的物理交互,也不会产生trigger相关消息。

当且仅当A和B都有碰撞体时,两者才有可能发生交互,才有可能产生trigger消息。

碰撞体collider分为两大类:trigger collider, 非trigger collider

trigger collider就是触发器,一个勾选了Is trigger的 collider不产生任何物理交互,只在其它collider进入其范围时触发一个OnTriggerEnter消息,停留其间触发OnTriggerStaty消息,退出时触发OnTriggerExit消息。

Is trigger选项将会使RigidBoy组件的物理碰撞效果失效,但会受到重力的作用。

非trigger collider就是物理碰撞体。一个取消勾选Is trigger的collider就是一个物理碰撞体(这是默认选项)。

又分为两类:障碍物(或称静态碰撞体static collider,只有collider组件)和刚体(或称动态碰撞体dynamic collider,同时有collider和rigidbody组件)

static collider一般为场景中不动的障碍物,会阻挡其它碰撞体的运动但不会被推动。如果非要移动静态碰撞体则会导致物理系统额外的计算开销及不可知的错误,对游性能造成很外的影响,不要这样使用。

dynamic collider就是动态碰撞体,刚体,具有collider和rigidbody两种组件。可以碰撞其它碰撞体,也可以被碰。

刚体如果勾选了rigidbody组件的 Is kinematic属性将变为运动学刚体,这种物体与障碍物的表现有些类似,可以称为半动态碰撞体,可移动的障碍物。运动学刚体可以推动其它物体却不可以被其它物体推动。且不受重力影响。

不存在一个物体既是触发器又是是碰撞体。只能二选一。要么是trigger, 要么非trigger

总结:物理系统中物体的分类:触发器(collider组件勾选了Is Trigger),障碍物(仅有collider组件),可移动障碍物(有collider和rigidbody组件且rigidbody组件勾选了Is Kinematic),刚体(同时具有collider和rigidbody组件)

触发器不产生任何物理交互。障碍物静止不动,会阻拦其它则体运动。

可移动障物可推动其它刚体或被刚体推动,不与障碍物互动。

刚体与则体可以互动。

时间: 2024-10-23 10:15:11

U3D physics总结的相关文章

u3d 地形 U3d terrain

u3d 地形 U3d terrain 作者:韩梦飞沙 Author:han_meng_fei_sha 邮箱:[email protected] E-mail: 313134555 @qq.com fbx ,    Maya或者其他工具导出来的一种文件, 一个模型. A file that FBX, Maya, or other tools export, a model. 任务模型,角色模型,动画,裁剪. 跑动.按键,前后左右,执行动作. Task model, role model, anim

A*算法之在U3d下实现简单的自动寻路

前言: 算法简介: A*搜寻算法俗称A星算法.A*算法是比较流行的启发式搜索算法之一,被广泛应用于路径优化领域[.它的独特之处是检查最短路径中每个可能的节点时引入了全局信息,对当前节点距终点的距离做出估计,并作为评价该节点处于最短路线上的可能性的量度.[1] - 百度百科 通俗点说,就是在起点与目标点之中找出一条可通行的最短路线.常见于各类RPG游戏中的自动寻路功能:点击某个任务,人物会自动移动过去:点击地图上某个点,人物也会照着显示出来(或者隐藏了)的路线前进.玩过LoL,红色警戒等类似游戏的

Codeforces 444A DZY Loves Physics(图论)

题目链接:Codeforces 444A DZY Loves Physics 题目大意:给出一张图,图中的每个节点,每条边都有一个权值,现在有从中挑出一张子图,要求子图联通,并且被选中的任意两点,如果存在边,则一定要被选中.问说点的权值和/边的权值和最大是多少. 解题思路:是图论中的一个结论,最多两个节点,所以枚举两条边就可以了.我简单的推了一下,2个点的情况肯定比3个点的优. 假设有3个点a,b,c,权值分别为A,B,C 现a-b,b-c边的权值分别为u,v 那么对于两点的情况有A+Bu,B+

Physics 碰撞检测回调方法出错或者没有效果解决方法

1.碰撞检测回调方法编译出错; auto *listener = EventListenerPhysicsContact::create(); listener->onContactBegin = CC_CALLBACK_1(HelloWorld::onContactBegin,this); 在3.0rc版本中回调函数的参数变为一个,不能使用原来的两个参数; bool HelloWorld::onContactBegin(PhysicsContact& contact) { auto spr

U3D屏幕坐标,世界坐标,像素坐标之间的关系

U3D中,屏幕坐标和世界坐标单位一样,二者之间是直接的一一对应关系,不受屏幕分辨率影响.默认情况下屏幕空间画布的左下角坐标是世界原点(0,0,0),这种情形下,世界空间的点(1920,1080,任何值)就对应屏幕上的点(1920,1080,0). sprite的大小是由实际图片的像素确定的,如512X512的图片放到sprite上,sprite的大小是5.12X5.12.即:默认情况下3D空间中1=100像素,这个是可以在每张图片导入设置中设定的. 由此,可见,屏幕分辨率代表的是游戏窗口能看到的

Unity Physics.Raycast 射线投射

bool Physics.Raycast(Vector3 origin, Vector3 direction, float distance, int layerMask) 当光线投射与任何碰撞器交叉时为真,否则为假. bool Physics.Raycast(Ray ray, Vector3 direction, RaycastHit out hit, float distance, int layerMask) 在场景中投下可与所有碰撞器碰撞的一条光线,并返回碰撞的细节信息(). bool

U3D学习笔记1: HelloWorld

Unity 版本: 5.3.5.f1 Hello World工程 1.新建工程 HelloWorld U3D可选2D和3D游戏 2.新建C#脚本文件 在project栏的assets目录右键->create->script->C# script 同时重命名成HelloWorld,双击即可打开 可以在Edit->preferences->External Tools中选择打开的编辑环境 3.编写代码 除了红色方块框起来的代码,其余的代码都是U3D框架自动帮我们生成好的代码  S

测试-几项关于Physics投射碰撞的测试

1.目标不需要附加刚体,只要有Collider即可被碰撞检测到 (之前的测试:http://www.cnblogs.com/hont/p/5202369.html) 2.发射的投射方向为Vector3.zero,为无效方向,此时不会返回结果. var hits = Physics.BoxCastAll(Vector3.zero, Vector3.one * 10000, Vector3.zero, Quaternion.identity, 0); Debug.Log("Hits length:

【Unity】11.5 物理材质 (Physics Material)

分类:Unity.C#.VS2015 创建日期:2016-05-02 一.简介 物理材质 (Physics Material) 用于调整碰撞对象的摩擦力和反弹效果. 二.创建物理材质 要创建物理材质 (Physics Material),请从菜单栏选择[资源 (Assets)] -> [创建 (Create)] -> [物理材质 (Physics Material)].然后将物理材质 (Physics Material) 从[工程视图(Project View)]拖动到场景中的碰撞体(Coll