微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

想要在与障碍物碰撞后停止移动玩家对象

如何解决想要在与障碍物碰撞后停止移动玩家对象

我是 Unity 的新手,现在我在 Unity 中遇到了碰撞。我正在尝试,当我的播放器对象(正在移动)碰到障碍物时,它会停止移动。然而,搜索了这么多教程,我什么也找不到。

using UnityEngine;

public class PlayerCollision : MonoBehavIoUr
{

    void OnCollisionEnter(Collision collision)
    {
        Debug.Log("WE HIT AN OBSTACLE");
    }
}

我在我的 Player 对象中添加了这段代码并运行了它,但控制台中没有任何内容。我应该做哪些改变?

解决方法

如果您添加一个脚本来移动您的玩家,您可以在发生碰撞时禁用该脚本。 假设我们有脚本 PlayerMovement

public PlayerMovement playerMovement;       
void OnCollisionEnter(Collision collision)
{
    playerMovement.enabled = false;
}

在这种情况下,您应该在 Unity 中分配 PlayerMovement 组件。 在另一种情况下,您可以在脚本中获取 PlayerMovement 组件:

void OnCollisionEnter(Collision collision)
{
   if(collision.gameObject.tag.Contains("Player")
   collision.gameObject.GetComponent<PlayerMovement>().enabled = true;
}
,

OnCollisionEnter 当这个碰撞器/刚体开始接触另一个刚体/碰撞器时被调用。

与 OnTriggerEnter 相比,OnCollisionEnter 传递的是 Collision 类而不是 Collider。 Collision 类包含有关接触点和撞击速度等信息。 注意:仅当其中一个碰撞器还附加了非运动学刚体时才会发送碰撞事件。碰撞事件将发送到禁用的 MonoBehaviours,以允许启用 Behaviors 以响应碰撞。

来源:Unity documentation

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。