将Collider转换为触发器

时间:2016-09-01 04:11:29

标签: c# unity3d

我正在Unity中开发2D动作平台游戏,我有一个爬行功能,当游戏按下S时会激活,但是我需要它将头部对撞机转换为触发器,以便当玩家爬进狭小的空间时游戏接受了这一点,并防止他们再次站立,这将导致故障。如何将头部对撞机转换为触发器

奖励:玩家坚持使用其他对手,所以如果有人知道如何解决这个问题,将会非常感激。

1 个答案:

答案 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取消注册它。然后,只有在列表为空时才会重新激活对撞机。

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