好的,这是官方网站上最困难的Unity3D问题:
如果Unity中有两个对象,当你与B碰撞时,可能用手指拖动A,
这些天,Unity明智地为您提供了PhysX决定在碰撞中应用于该项目的力量。只需使用OnCollisionStay
...
Rigidbody rb;
void OnCollisionStay(Collision col)
{
if (rb.isKinematic) return;
if ( col.impulse.x != 0f || col.impulse.y != 0f )
Debug.Log(gameObject.name +" bashed, PhysX doing this .. "
+ col.impulse.x.ToString("f4") +" "
+ col.impulse.y.ToString("f4") +" "
+ col.impulse.z.ToString("f4") );
}
看着doco http://docs.unity3d.com/ScriptReference/Collision.html
值得的是.impulse
impulse应用于此接触对以解决碰撞的总脉冲。
大。但。不幸的是,在中给出的冲动是什么坐标系是完全神秘的。
试一试,看看。这很坚果。它是相对于两个碰撞对象之间的方向(即在transform
和col.transform
之间)还是在某个局部空间(哪个?)它是否相对于.relativeVelocity
向量?< / p>
到底是什么意思?它是屈膝的。试试看。
为了善良,我希望将力量简单地应用于世界空间。
文档没有信息,没有人在讨论它。