Unity3d 游戏对象未检测到与地板的碰撞
我的游戏对象开始躺在地板上。在长方体碰撞器上,IsKinetic设置为true,触发器设置为true 当玩家触摸对撞机时。它将游戏对象向下移动到地板上。然后我将iskinetic设置为false,将触发器设置为false。这将迫使游戏对象坠落,直到它撞到地板并停止。我的问题是在游戏对象落地并停止后。我无法让游戏对象识别它与地板碰撞。我在OnCollisionInter2d和OnCollisionStay2D中有一个Debug.Log语句。当他们触摸时,Debug.Log不会出现在控制台中。为什么会这样 游戏对象有一个刚体和长方体碰撞器。地板上还有一个长方体碰撞器和刚体Unity3d 游戏对象未检测到与地板的碰撞,unity3d,2d,graphics2d,gameobject,Unity3d,2d,Graphics2d,Gameobject,我的游戏对象开始躺在地板上。在长方体碰撞器上,IsKinetic设置为true,触发器设置为true 当玩家触摸对撞机时。它将游戏对象向下移动到地板上。然后我将iskinetic设置为false,将触发器设置为false。这将迫使游戏对象坠落,直到它撞到地板并停止。我的问题是在游戏对象落地并停止后。我无法让游戏对象识别它与地板碰撞。我在OnCollisionInter2d和OnCollisionStay2D中有一个Debug.Log语句。当他们触摸时,Debug.Log不会出现在控制台中。为什么
void OnTriggerEnter2D(Collider2D other)
{
if (other.gameObject.tag == "Player")
{
Debug.Log ("Player is touching the section");
//sectionRigidbody.isKinematic = true;
if (readyToDrop == false)
//moves player
transform.position += newPosition;
readyToDrop = true;
sectionRigidbody.isKinematic = false;
sectionBoxCollider.isTrigger = false;
sectionRigidbody.collisionDetectionMode = CollisionDetectionMode2D.Continuous;
//sectionRigidbody.isKinematic = true;
}
}
void OnCollisionEnter2D(Collider2D col)
{
if (col.gameObject.tag == "Floor")
{
Debug.Log ("section is touching the floor");
}
}
void OnCollisionStay2D(Collider2D col)
{
if (col.gameObject.tag == "Floor")
{
Debug.Log ("section is touching the floor");
}
}
使用带有参数的冲突回调函数时,请注意 作为参数。你说得对 并且不作为参数。这就是你失败的地方 听起来很简单,但不一样 如果参数错误,则不会调用它们 在Unity的最新版本中,当您犯此错误时,将在编辑器中抛出错误。它看起来像这样: 脚本错误:OnCollisionInter2D此消息参数必须为 类型:消息将被忽略 及 脚本错误:OnCollisionStay2D此消息参数必须为 类型:消息将被忽略 解决方案: 替换
void-oncollisioninter2d(碰撞的r2d列)
和void-OnCollisionStay2D(碰撞的r2d列)
与
无效OnCollisionInter2d(Collision2D列)
和无效OnCollisionStay2D(Collision2D列)
使用带参数的冲突回调函数时请注意
作为参数。你说得对
并且不作为参数。这就是你失败的地方
听起来很简单,但不一样
如果参数错误,则不会调用它们
在Unity的最新版本中,当您犯此错误时,将在编辑器中抛出错误。它看起来像这样:
脚本错误:OnCollisionInter2D此消息参数必须为
类型:消息将被忽略
及
脚本错误:OnCollisionStay2D此消息参数必须为
类型:消息将被忽略
解决方案:
替换
void-oncollisioninter2d(碰撞的r2d列)
和void-OnCollisionStay2D(碰撞的r2d列)
与
无效OnCollisionInter2d(Collision2D列)
和无效OnCollisionStay2D(Collision2D列)
您提到触发器设置为true
触发器不会注册与传入刚体的碰撞。相反,当刚体进入或退出触发体积时,它会发送OnTiggerEnter、OnTiggerExit和OnTiggerStay消息
来源:您提到触发器设置为true 触发器不会注册与传入刚体的碰撞。相反,当刚体进入或退出触发体积时,它会发送OnTiggerEnter、OnTiggerExit和OnTiggerStay消息
来源:将所有调试日志放在if tag语句之外,然后再次测试将其移到外面,但仍然没有任何结果@ProgrammerPost ScreenShow附加到GaemObject的组件。@程序员我已使用您请求的图片编辑了原始版本。我检查了您的图片,设置看起来很好。你说的是“我的游戏对象开始时躺在地板上。在框对撞机上,IsKinetic设置为true,触发器设置为true”但根据您刚刚上传的图像,这不是真的。将所有调试日志放在if tag语句之外,然后再次测试将其移到外面,仍然没有任何内容@ProgrammerPost Screenshot附加在GaemObject上的组件。@Programmer我用您请求的图片编辑了原始版本,我检查了你的照片,设置看起来很好。你说的是“我的游戏对象开始时躺在地板上。在框对撞机上,IsKinetic设置为true,触发器设置为true”,但根据你刚刚上传的图像,这不是真的