通常使用刚体与碰撞体共同构成人物移动的物理系统。
有这么几点需要注意:
1、动态刚体一旦与一个没有弹性的碰撞体碰撞了后,那么其速度立刻变为0,并且不会反弹回来,没有其他操作,其速度一直为0,并且只有动态刚体才能与其他的碰撞体发生反应,调用OnColliderEnter和OnTriggerEnter。
2、动态刚体使用AddForce,它真的应用了物理模拟。也就是说,F*S=0.5*m*V^2。只要你一直给它加力,那么这个动态刚体就会一直获得动能,它的速度就会一直加快。如果没有设置线性阻尼,没有与groud的摩擦力,那么这个物体就会一直匀速直线运动。所以真的很真实。需要注意,摩擦力这个是需要在物理材质中进行设置的。
3、Unity物理系统的碰撞检测是离散的,是按固定间隔0.02秒进行检测(其他的所有物理行为都是按固定间隔进行计算的,但是这个间隔是可以在Editor中设置的。还有我们要注意Update的帧间隔,与固定0.02秒的物理间隔的关系。嗯~ o(* ̄▽ ̄*)o,他们的关系就是没有关系。因为他们不属于一个次元。但是我们要明白,Update的帧间隔在机器性能差的时候会影响到Unity物理系统,严重时会使物理系统瘫痪掉,也就是无法进行各种计算。各种各样的奇怪情况。)具体的情况参考https://blog.csdn.net/mao_xiao_feng/article/details/52605370
-
Rigidbody2D详解
一些事项:
1.任何添加到同一个 GameObject身上或者其子物体身上的 2D Collider组件都隐式的 附属于 那个 Rigidbody 2D.
2.当一个Collider 2D组件附属到一个Rigidbody 2D身上时,它就跟随Rigidbody 2D移动。这时不应该通过直接设置Transform 或者 C