Unity组件笔记

文章详细探讨了Unity中RaycastHit在碰撞检测中的应用,以及rigidBody.velocity与animator.velocity在角色动画控制下的行为差异。前者用于获取碰撞部位,后者在RootMotion启用时对整体速度的影响较小,仅受重力影响。
摘要由CSDN通过智能技术生成

网格碰撞体MeshCollider

想用网格碰撞体是因为感觉NPC用扇形碰撞体检测敌人会很方便,就搞了个扇体网格。然后发现:物体上必须有MeshFilter和MeshRenderer,MeshCollider才有效且在Scene视图显示。不过把这两个组件禁用还是可以用。

因为我把MeshCollider当触发器用,所以用OnTriggerEnter()检测,然后它先检测到了自己的枪、身上的中枪触发器。这意味着需要调这个检测物体的层和碰撞矩阵,把它放到一个单独的层PersonMonitor,和其他人物的碰撞也不能和Character层碰撞,因为先碰到了自己。到这里已经不比代码写一个扇形区域检测简单了,我就放弃了这个方案。

碰撞体Collider

人物丢枪时,明明枪有碰撞体,且和地面碰撞,但有时枪会穿到地下

之前枪层和人物层是碰撞的,改成不碰撞后这个问题没出现过了。推测是因为人物和枪解除父子关系时枪和人物已经穿模了,枪和人物穿模着掉在地上,物理系统直接也不判断枪和地面的碰撞了。看来枪层和人物层还是不能碰撞

粒子系统

粒子系统最常用的模块,除了最上面的模块,就是Emission、Shape、Renderer

Emission

决定了粒子系统是持续的还是爆发的。Rate over time>0,粒子系统就持续放出粒子;有Bursts,就爆发出粒子。

Shape

发射区域的形状

Renderer

发射的粒子。Billboard就是播放一个图片,Mesh就是生成一个实体。

位置约束PositionConstraint

组件刚加上是这样:

勾选isActive后,PositionAtRest变成物体的世界位置,PositionOffset变成物体相对于Source的位置。勾选isActive后,移动被约束物体,PositionAtRest和PositionOffset会实时变化,移动Source物体,被约束物体并不会跟着移动,PositionAtRest和PositionOffset会还是会实时记录被约束物体的世界位置和相对位置。

勾选Lock后,不允许修改PositionAtRest和PositionOffset。但还允许移动被约束物体,移动Source物体也不带动被约束物体。

enable、isActive和Lock要都勾选约束才有效。此时不允许只修改被约束物体的位置,Source物体会带动被约束物体的移动。

总结:isActive开启后实时更新PositionAtRest和PositionOffset;Lock开启后锁定PositionAtRest和PositionOffset;两个都开启后PositionAtRest和PositionOffset不更新且锁定,约束生效。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值