将Collider转换为触发器
本文关键字:触发器 转换 Collider | 更新日期: 2023-09-27 18:04:57
我正在用Unity开发一款2D动作平台游戏,我有一个爬行功能,当玩家按下S键时激活,但我需要它将头部碰撞器转换为触发器,这样当玩家爬进一个狭窄的空间时,游戏就会发现这一点,并防止他们再次站立,否则会导致故障。如何将头部碰撞器转换为触发器
奖励:玩家坚持其他碰撞器,所以如果有人知道如何修复它将非常感激。
您可以使用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
将其注销。然后,只有当列表为空时,才能重新激活碰撞器。
这就是为什么我们大多数人使用光线投射而不是碰撞器/触发器来处理这种情况。