我的场景中有两个盒子对撞机。我基本上操纵一个,另一个是静止的,只是在默认层上,它还附有一个刚体。我主要旋转的另一个对象,由于某种原因它直接旋转通过另一个对象。它在另一层,但是,我检查了层碰撞矩阵,并且检查了所有的框,所以我不确定为什么碰撞没有发生。是否有一个原因?
我正在使用transform.Rotate
进行旋转。两个碰撞器都没有选择isTrigger。有什么想法吗?
编辑:添加此内容以显示rigidbody.MoveRotation
private void FixedUpdate()
{
if (Input.GetKey(KeyCode.Y) && !colliding)
{
if (rigidBody == null)
{
rigidBody = gameObject.AddComponent<Rigidbody>();
rigidBody.isKinematic = true;
rigidBody.useGravity = false;
rigidBody.interpolation = RigidbodyInterpolation.Interpolate;
}
rot = Quaternion.Euler(0, .5f, 0);
rigidBody.MoveRotation(rigidBody.rotation * rot );
}
if (Input.GetKey(KeyCode.I) && !colliding)
{
if (rigidBody == null)
{
rigidBody = gameObject.AddComponent<Rigidbody>();
rigidBody.isKinematic = true;
rigidBody.useGravity = false;
rigidBody.interpolation = RigidbodyInterpolation.Interpolate;
}
rot = Quaternion.Euler(0, -.5f, 0);
rigidBody.MoveRotation(rigidBody.rotation * rot);
}
else if (colliding)
{
rigidBody.MoveRotation(rigidBody.rotation * Quaternion.Inverse(rot));
}
}
答案 0 :(得分:2)
如果通过变换更新任何对象的位置或旋转,则不会发生碰撞。您可以接收OnCollision事件,但如果使用变换旋转或移动,则无法获得所需的结果。更新代码以使用刚体对fixedUpdate中的旋转和位置进行任何更改以接收这些效果,即碰撞。