我正在Unity中开发2D动作平台游戏,我有一个爬行功能,当游戏按下S时会激活,但是我需要它将头部对撞机转换为触发器,以便当玩家爬进狭小的空间时游戏接受了这一点,并防止他们再次站立,这将导致故障。如何将头部对撞机转换为触发器
奖励:玩家坚持使用其他对手,所以如果有人知道如何解决这个问题,将会非常感激。
答案 0 :(得分:0)
您可以在运行时使用对撞机的isTrigger
属性将对撞机转换为触发器,如下所示:
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
取消注册它。然后,只有在列表为空时才会重新激活对撞机。
这就是为什么我们大多数人使用光线投射而不是碰撞器/触发器来应对这种情况。