将Collider转换为触发器

本文关键字:触发器 转换 Collider | 更新日期: 2023-09-27 18:04:57

我正在用Unity开发一款2D动作平台游戏,我有一个爬行功能,当玩家按下S键时激活,但我需要它将头部碰撞器转换为触发器,这样当玩家爬进一个狭窄的空间时,游戏就会发现这一点,并防止他们再次站立,否则会导致故障。如何将头部碰撞器转换为触发器

奖励:玩家坚持其他碰撞器,所以如果有人知道如何修复它将非常感激。

将Collider转换为触发器

您可以使用collider的isTrigger属性在运行时将collider转换为触发器,如下所示:

private Collider collider ;
void Start() {
    // Assuming this script goes on the head gameobject
    collider = this.GetComponent<Collider>();
}
void OnCollisionEnter(Collision col) {
    this.collider.isTrigger = true;
}
void OnTriggerExit(Collider other) {
    this.collider.isTrigger = false;
}

@JanR建议的解决方案可能更简洁。但由于你的问题是关于如何将对撞机转换为触发器,我认为这值得回答。

无论如何,根据你的场景几何,这总是会变得混乱。当有两个或多个碰撞器与你的头部碰撞器/触发器交互时,你会遇到问题。

你可以通过保持一个相互作用的碰撞器列表来避免这个问题,你必须使用OnCollisionEnter将碰撞器注册到列表中,OnCollisionExit将其注销。然后,只有当列表为空时,才能重新激活碰撞器。

这就是为什么我们大多数人使用光线投射而不是碰撞器/触发器来处理这种情况。