网格碰撞体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不更新且锁定,约束生效。