unity3d人物为什么会一直撞墙

unity3d人物为什么会一直撞墙,第1张

移动物体加刚体后,在Update中每一帧的时间不一样,造成物体受力不均匀,物体发生碰撞时抖动。
解决方法:FixedUpdate是固定帧,每一帧的时间相同:是刚体物体可能与其他碰撞体有持续的接触,刚体在接触面上移动,比如说刚体在一个带有boxcolider的地面上移动,这个时候你就会发现有些地方会导致刚体位置的变化,应为boxcolider有一定厚度,你人物的colider可能会由于重力等原因进入这个碰撞体,从而导致碰撞体挤压。查看人物自己的子物体下面是不是还有其他的刚体移动的代码要放在fixedUpdate里面,而不是Update。摄像机的跟随代码要放在LateUpdate里面,而不是Update。

原因:放的太大了。。缩小可见区,放大字体,改成resize freely 

要产生碰撞必须为物体添加刚体组件和碰撞器,刚体可以让物体在物理条件下运动。碰撞体是物理组件的一类,它要与刚体一起添加到游戏对象上才能触发碰撞。如果两个刚体相互撞在一起,除非两个对象有碰撞体时物理引擎才会计算碰撞,在物理模拟中,没有碰撞体的刚体会彼此相互穿过。

在unity3d中,能检测碰撞发生的方式有两种,一种是利用碰撞器,另一种则是利用触发器
碰撞器:一群组件,它包含了很多种类,比如:Box Collider(盒碰撞体),Mesh Collider(网格碰撞体)等,这些碰撞器应用的场合不同,但都必须加到GameObjecet身上。

触发器,只需要在检视面板中的碰撞器组件中勾选IsTrigger属性选择框。
触发信息检测:

1MonoBehaviourOnTriggerEnter(Collider collider)当进入触发器

2MonoBehaviourOnTriggerExit(Collider collider)当退出触发器

3MonoBehaviourOnTriggerStay(Collider collider)当逗留触发器
碰撞信息检测:

1MonoBehaviourOnCollisionEnter(Collision collision) 当进入碰撞器

2MonoBehaviourOnCollisionExit(Collision collision) 当退出碰撞器

3MonoBehaviourOnCollisionStay(Collision collision)  当逗留碰撞器
碰撞器是触发器的载体,而触发器只是碰撞器身上的一个属性

当Is Trigger=false时,碰撞器根据物理引擎引发碰撞,产生碰撞的效果,可以调用OnCollisionEnter/Stay/Exit函数;

当Is Trigger=true时,碰撞器被物理引擎所忽略,没有碰撞效果,可以调用OnTriggerEnter/Stay/Exit函数。
碰撞器是另一种组件,它和刚体一起,来使碰撞发生。如果两个刚体撞在一起,物理引擎将不会计算碰撞除非它们包含一个碰撞器组件。没有碰撞器的刚体,会在物理模拟中相互穿透。碰撞器必须独立于刚体加在对象上。碰撞器并不一定需要附加刚体,但是要使移动物体具有碰撞效果必须附加刚体。为了使两个触发器碰撞时发出碰撞事件,其中一个必须包含刚体

设置敌人的Layer为“Enemy”,在脚本中检测碰撞器的Layer,具体的脚本语言我有点忘了(呵呵最近一直忙别的没写脚本),大概是这样: raycasthit hit = new raycasthit(); raycastall(ray, hit);//向检测对象(敌人)发射射线,hit用来提取对象碰撞

怀疑是物理材质问题。。
如果没有建立物理材质的话。
在一个文件夹中新建一个物理材质
Physic Material。
按照需求进行设定设置d跳,静态摩擦力,动态摩擦力之类。
然后给碰撞体都加上物理材质。//如果有地面什么的,也要加上物理材质。
另外线性阻尼在Rigidbody 下的Drag 也应该有用。
我也是萌新,主要做2D,这些并没有去验证。。。但是希望能有所帮助。


欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/yw/13343871.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-07-18
下一篇 2023-07-18

发表评论

登录后才能评论

评论列表(0条)

保存