位置: 编程技术 - 正文

Unity3d 物理碰撞de那点事(不是触发)(unity3d物体碰撞)

编辑:rootadmin

推荐整理分享Unity3d 物理碰撞de那点事(不是触发)(unity3d物体碰撞),希望有所帮助,仅作参考,欢迎阅读内容。

文章相关热门搜索词:unity碰撞函数,unity碰撞原理,unity物体碰撞后不能移动,unity2d物理碰撞,unity2d物理碰撞,unity物体碰撞检测,unity3d物体碰撞,unity2d物理碰撞,内容如对您有帮助,希望把文章链接给更多的朋友!

还是那句话 大神勿喷 不喜勿喷 若有不对的地方 欢迎指正 欢迎拍砖。。。

OK!! 其余的废话就不多说的了 直接进入正题。那么,今天要讲碰撞,碰撞 碰撞,怎么样才能算是有发生碰撞呢。再我看来,首先 至少得有两个物体,物体与物体之间才能产生碰撞,对吧,其次,物体身上得有碰撞器,不然 都没有一个标志的东西,那不是随随便便的物体就可以发生碰撞了,那怎么能行,对吧。。那么,可能有的读者看到这里就会说了,那碰撞器是一方有呐 还是 双方都要有呢? 这个 我也不知道,不过 我们可以做实验看看哟...(博主有点卖关子,抽他,狠狠的抽他)

我们新建一个场景,在该场景中摆放三个cube物体,并分别取名为red,yellow和blue,此时,可以从组件面板中看到他们都有Box Collider组件,接下来 我们编写一个脚本来移动控制blue物体, 代码很简单,就一句搞定 我就不粘贴出来了 使用Translate函数就可以了 。那么完事后,我们移动blue物体去撞击red和yellow物体 可以看到blue穿越了red和yellow物体,如图

显然,这样就没有发生碰撞,当然 为了更加的进一步证实这样是没有发生碰撞的 我们在blue物体身上的脚本中再次加入如下代码:

代码 的含义就是 检测是否有发生碰撞 若有发生碰撞 输出被碰撞物体的名称。运行游戏,可以看到效果和刚才是一样的,也并未见到控制台有debug语句的输出,所以 可以得出:若仅仅只有collider碰撞器的话,是无法发生物体之间的碰撞的.

那么 ,怎么样才能发生碰撞呢,此时,我们想想现实当中的一切物体都是有重力的存在的,那么游戏当中我们是不是也加上重力试试看呐,那么,给谁加呐 红色cube, 蓝色cube还是黄色cube呢,我们不妨一个一个试试看,我们先将黄色cube加上rigidbody属性 和红色cube做一个对比,可以发现 最终的结果和上边是一样的,发生了穿越,黄色cube虽然有了重力属性,但,依旧是被蓝色cube穿越了,那么 此时 我们场景当中的cube碰撞器属性和重力属性的分布是:红色cube只有Box Collier,没有rigidbody属性,黄色cube既有Box Collider属性又有rigidbody属性,蓝色cube只有Box Collier 属性 没有rigidbody属性。 那么,从这里我们可以得出的结论是:在两个物体都有Box Collier的基础上 有且仅有一方有rigidbody属性,碰撞条件是不陈立的,也就是说他们之间碰撞的话是不会有碰撞的效果的。注意:这个结论 我不敢说是百分百的正确,但是 ,至少读者看到这里,可以暂时这么认为。 我们先把这条结论定为结论1。

那好,我们紧接着在蓝色cube上加上rigidbody属性,运行游戏 我们可以看到,此时,意想不到的结果出现了,不发生穿越现象了 如图,碰撞红色cube:

碰撞黄色cube:

控制台的输出信息:

Plane是我用来充当地面的一个面片...在这里是无关紧要的.

Unity3d 物理碰撞de那点事(不是触发)(unity3d物体碰撞)

&#;得注意的是:此时 蓝色cube和红色,黄色cube都发生了碰撞 而 红色cube身上只有Box Collider属性并没有重力属性,所以,刚才的结论1就被推翻了。。。有没有感到一点小兴奋,然而 这又能说明什么呢!!!!

说明的问题大发咯,当然 我们此时就先不拿什么静态碰撞器,刚体碰撞器的之类的词语来说事了,个人觉得那些没啥意思,只是唬人的。我换种方式来讲,首先 我们先分析分析 蓝色cube身上的组件 既有rigidbody 又有Box Collier,那 我们将这类游戏物体称之为A类游戏物体,那么由此得到的结论是什么:只要某一游戏物体身上有BoxCollider 那么我们用A类游戏物体去碰撞该游戏物体就一定会有碰撞效果,那,那,为了更加的肯定我们这一点,我将黄色cube身上添加一个脚本,脚本内容很简单,就一句主代码:

然后 将蓝色cube身上的脚本代码中的OnCollisionEnter()屏蔽掉;运行游戏可以发现 当我们 蓝色cube去碰撞黄色cube的时候,控制台输出了信息:blue。 从这你能看出点什么的么,此时,是不是就相当于蓝色cube被黄色cube代替的了,好了,看到这里,是更正名字的时候了,什么意思呢? 就是 ,我们称A类游戏物体为刚体碰撞器,而我们称红色cube这种只有BoxCollider的游戏物体为静态碰撞器,所以 我们这里 得出的结论是:刚体碰撞器去碰撞任何的静态碰撞器 都会有碰撞的发生. 当然, 同样,我也不敢说此时得到的结论是百分百的正确,不过,暂时我们就先这样的理解,那么 我们称这条结论为结论2。

那,实验结束了?你觉得结束了么,反正,我把我自己当成读者的话,我会觉得还不过瘾,为什么这么说呢? 你想想,我们不是得到结论2,那么结论2是说刚体碰撞器去碰撞任何静态碰撞器,都会有碰撞的发生,那好了,那再上边的基础之上,我如果将蓝色cube身上的rigidbody属性去掉,然后,去碰撞红色cube和黄色cube,按照我们的结论2,我们事先可以预测就是:与红色cube不会发生碰撞,与黄色cube会发生碰撞,没错吧!!!想想是不是,我们黄色cube此时就是充当刚体碰撞器的角色,所以,当我们的蓝色cube(此时的静态碰撞器)主动去碰撞黄色cube时,按结论2不就会发生碰撞效果。那结果会是这样的么,我们拭目以待。所以,我们走一个,将蓝色cube身上的rigidbody属性去掉,然后,运行游戏,可以发现:与红色cube和黄色cube均没有发生碰撞,也就是说,我们的结论再次被推翻了。。。此时,读者的心情是喜还是忧呢,不过,我猜想更多的应该是柳暗花明的感觉吧...,当然,这里的柳暗花明可能更多的指的是那种结构上的柳暗花明而不是结论上的柳暗花明。

ok,我们一鼓作气,乘热打铁,既然 蓝色cube去碰撞黄色cube没有碰撞效果,那么,反过来,我使用黄色cube去主动碰撞蓝色cube,那会不会有碰撞的反应呢?想想,按照结论2是可以,不过结论2已被推翻,其实,与其说结论2被推翻不如说在某些条件下结论2是成立的,不过 我们这里 先不讨论这个。那么,我们接着实验一下,看看到底有没有碰撞反应,我们在黄色cube身上的脚本中再次加入如下代码,代码很简单,我也不做过多的解释 就是控制黄色cube的旋转和移动。

我们移动黄色cube去碰撞蓝色cube,神奇的现象出现:碰撞“奇迹”般的发生了。怎么会这样呢?读者心里是不是一直在纠结,为什么会这样呢。。。。反过来居然就可以,同样,暂时不论,先给大家卖个关子,同时大家也可以自己想想能得到什么样的结论,因为,现象是如此了,结论是由人定的,自己定的结论,就是自己的经验了。

那我们继续咯。说实话,通过上边的实验,能得到什么样的结论,我也不知道了,因为,得到的两条结论都被推翻了。此时,有读者能得到什么好的结论么。求分享,求分享。。。嘿嘿

当然,上边卖萌一下,文章还得继续(此文章非彼文章,you konw that).细心的读者,可能会发现上边我描述碰撞的时候,我使用了"主动碰撞"一词,又加上我们又实验了黄色cube碰撞蓝色cube这一血的事实。所以,我们大胆的来一个假设吧?也就是说在结论2的基础上稍做修改,变为:刚体碰撞器主动的去碰撞静态碰撞器才能发生物体之间的碰撞,而刚体碰撞器被动的接受碰撞静态碰撞器的碰撞是不会发生碰撞的。“主动的去碰撞”和“被动的接受碰撞”,这两个词语在假设的结论中形成鲜明的对比,我想此处应该是无声胜有声了吧!!!!

ok 也不再做更多的实验来证实这个结论的了,因为,再做下去文章就变得又臭又长的了,也是时候到尾声的了,当然,欢迎读者指出错,欢迎拍砖,而且是狠狠的拍。(我皮厚着呢).

ps:转载 请注明出处 谢谢....

一起来学u3d之圣典.7 一起来学u3d之圣典.7废话不多说,一针见血,go!一起来看API其中不懂的大家互相帮助哈英文部分版权属©Unity公司所有,中文部分©Unity圣典版权所有。

《Unity网络多玩家游戏开发教程(上册)》 欢迎大家到我们团队的官网上查看此书的详细介绍,下面是链接《Unity网络多玩家游戏开发教程(上册)》我们的宗旨是:我们只做最专业的技术传播者!

Unity3D与Android项目交互中无法监听back键返回的解决办法 这两天为解决unity3d与android项目整合中出现的无法监听真机back实体键的问题找了很多资料,网上也有很多人遇到了这个问题,但是乎都没找到有效的解

标签: unity3d物体碰撞

本文链接地址:https://www.jiuchutong.com/biancheng/375685.html 转载请保留说明!

上一篇:[置顶] (八)Unity5.0新特性------IL2CPP Internals: 生成的代码之旅(置顶聊天折叠怎么开启)

下一篇:《Unity网络多玩家游戏开发教程(上册)》(unity局域网多人游戏)

  • 医疗机构销售药品需要销售记录吗
  • 税收优惠政策落实情况报告
  • 税收的本质是什么意思?
  • 食品增值税发票需要交税吗
  • 注册资本5块钱
  • 总产值和主营业务收入
  • 票面3个点什么意思
  • 体检怎么写公司抬头
  • 境外签署合同的效力
  • 公司分立是不是法人
  • 所得税汇算清缴时间期限
  • 期间费用如何设置项目核算
  • 营业外支出企业所得税怎么填
  • 会员卡收费怎么办理
  • 不动产出租属于什么收入
  • 企业注销合适还是转让出去合适
  • 利润分配亏损太多如何处理?
  • 生产型增值税与消费型增值税的区别在于是否允许企业
  • 居民委员会有没有纳税人识别号吗
  • 办公室和电梯电梯哪个好
  • 土地使用税能计入土地转让的土地增值税清算吗
  • 客户不结款怎么办,出结款通知单
  • 土地增值税的纳税人是在我国境内
  • 企业所得税如何计算
  • 销售的增长率公式是什么
  • 资产负债表日后调整事项会计处理
  • 1697506445
  • 王者荣耀中白起的台词
  • 华硕s5am7700
  • 雨林木风 u盘
  • vue移动端预览pdf
  • 鸿蒙系统怎样开启5G
  • 系统属性的表现
  • win7网络适配器不见了怎么恢复
  • 水利工程水费怎样计算
  • PHP:preg_split()的用法_PCRE正则函数
  • 提前支付的费用记账
  • 分公司收到总公司利润分录怎么写
  • 辅导期一般纳税人可以抵扣进项吗
  • 营改增后不动产发票
  • 若依框架搭建
  • php 分页
  • 罚款属于应付账款吗
  • 一维卷积padding
  • static php作用
  • 工作服列支什么科目
  • element-ui 表格
  • php抢红包功能思路
  • php如何做app
  • 公司对其他公司的投资怎么做账
  • mysql union和join
  • 存货资产减值损失借贷方向
  • 咨询公司需要交税吗
  • 商品流通企业的种类
  • 银行存款产生的利息收入
  • 销售退回的会计分录怎么做
  • 企业所得税是指哪些
  • 递延收益为什么属于负债
  • 个体的个人所得税怎么交税?
  • 代销产品如何做会计分录
  • 工会经费按什么比例返还
  • 红冲暂估原材料如何做会计分录
  • 纳税调整怎么做
  • 保本理财产品如何赎回
  • 咨询服务费计入哪里
  • 2018年水利建设基金税率
  • windows vista home basic
  • mac怎么共享wifi密码给iphone
  • win8如何添加启动项
  • 怎么给电脑装win8系统
  • mac系统快速入门
  • win2008个性化
  • win10多用户独立
  • ExtJS Grid使用SimpleStore、多选框的方法
  • vue使用mixin
  • 使用筷子就餐会不会传染乙肝病毒
  • jquery的实现原理
  • 计算消费税为什么要除1-比例税率
  • 个人自行申报纳税
  • 企业完税证明怎么查询真伪
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

    网站地图: 企业信息 工商信息 财税知识 网络常识 编程技术

    友情链接: 武汉网站建设