unity3d/2d刚体addforce如何才能立即停下来,我人物移动每次都会滑行一会

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了unity3d/2d刚体addforce如何才能立即停下来,我人物移动每次都会滑行一会相关的知识,希望对你有一定的参考价值。

参考技术A 这个方法是给刚体施加力,物体在力的作用下向某个方向移动的。不论你一直加力还是加一个瞬间力物体由于惯性都会向前滑行一段距离的。你要想让他立刻停下来需要你自己再写个方法让他停下来。
void StopMove()

//2D
gameObject.GetComponent<Rigidbody2D>().isKinematic = true;
//3D
gameObject.GetComponent<Rigidbody>().isKinematic = true;
追问

大佬不行啊

开启了还是会飘出去

解决了

把速度改成0就可以停下来了

velocity

本回答被提问者采纳
参考技术B 刚体的Collision Detection选择Discrete或者Continuous可以避免AddForce()所带来的惯性导致的额外滑行位移的情况。

unity里面translate是否可以无视碰撞

碰撞是可以触发的。但是需要满足一些条件:

一:两个要发生碰撞的对象,都需要添加碰撞器,例如盒子碰撞器等等。缺一不可。

二:其中一个可以使用Translate方式移动,但是另一个绝对不能也还是Translate方式移动,不是使用Translate方式移动的对象必须有刚体组件。

三:而有刚体组件的那个对象,是绝对不能用Translate方式移动,否则会破坏了刚体模拟的物理环境,正确的方式是在FixedUpdate函数里给刚体施加力AddForce。或者是直接修改刚体的速度velocity

四:两个物体在运动过程中,两个对象的位置、大小范围确实有发生了碰撞

五:碰撞器的组件上有个选项叫做 Is Trigger ,想要发生碰撞的组件,千万千万不能勾选它。因为一旦勾选了它,那么这个碰撞器就不再是碰撞器了,它变成了触发器。

必须同时满足以上的条件。才可以在使用Translate方式移动时触发碰撞



参考技术A 不是吧,可以发生碰撞的,只要发起碰撞的物体有rigidbody组件,被碰撞的物体有collider组建,用transform.Translate依然会发生碰撞的,我刚刚试过,可以发生碰撞本回答被提问者和网友采纳

以上是关于unity3d/2d刚体addforce如何才能立即停下来,我人物移动每次都会滑行一会的主要内容,如果未能解决你的问题,请参考以下文章

UNITY3D添加了刚体后,移动不成问题,也能实现CS效果,但是跳这个就出问题了,只能立定跳,不能边走边跳

Animator根骨骼清除刚体速率问题测试

1.5 Unity

Unity2D碰撞穿透的问题

OnTriggerEnter2D AddForce 到对象不起作用

u3d 给物体施加力的方式都有哪些