如何解决想要在与障碍物碰撞后停止移动玩家对象
我是 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 以响应碰撞。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。