Object 对象接触地形时冻结位置

Object 对象接触地形时冻结位置,object,unity3d,collision-detection,unityscript,Object,Unity3d,Collision Detection,Unityscript,此脚本附加到我的树。它应该冻结树的Y位置,并在树接触地面时将运动学设置为true。现在,游戏一开始它就冻结树木(树木不会掉到地上)。最初,这些树是运动型的,而且是冰冻型的 function OnCollisionEnter(other:Collision) { if(other.gameObject.tag == "Terrain") { Debug.Log("Object interacted with terrain on loading"); rig

此脚本附加到我的树。它应该冻结树的Y位置,并在树接触地面时将运动学设置为true。现在,游戏一开始它就冻结树木(树木不会掉到地上)。最初,这些树是运动型的,而且是冰冻型的

function OnCollisionEnter(other:Collision) {
    if(other.gameObject.tag == "Terrain") {
        Debug.Log("Object interacted with terrain on loading");
        rigidbody.isKinematic = true;
    }
}

您确实意识到您的
刚体约束.FreezePositionY呼叫不会做任何事情,对吗?现在只需获取并丢弃布尔值。你没有在那里设置任何东西。如果某些东西改变了运动学设置,是否有其他脚本可能会影响它?请检查:collisionObject在检查器中填充了场景中的地形?在巴特的评论的基础上,看一看如何使用rigidbodyconstraints@Lefty我更新了我的代码,但看起来附加了脚本的对象没有检测到地形。好的,最明显的可能问题是标签拼写错误(地形和地形不同)。尝试将
Debug.Log
放在
if
之前,查看它是否与任何内容冲突。如果没有,请检查对象和地形上的碰撞器是否正确设置,而不是触发器等。如果使用
地形碰撞器
请确保它具有地形数据集等。@Lefty不知怎么解决了这个问题。非常感谢。如果没有答案,只有评论,我如何将此问题标记为已回答?