0
我正在Unity開發2D動作平臺遊戲,我有一個抓取功能,當播放按S時會激活,但我需要它將頭撞擊器轉換爲觸發器,以便當玩家正在爬到一個狹小的空間,遊戲會在這個空間中進行拾取,並阻止它們再次站立,這會導致小故障。如何將頭撞機轉換爲觸發器將對撞機轉換爲觸發器
獎勵:玩家堅持其他碰撞者,所以如果有人知道如何解決這個問題,將不勝感激。
我正在Unity開發2D動作平臺遊戲,我有一個抓取功能,當播放按S時會激活,但我需要它將頭撞擊器轉換爲觸發器,以便當玩家正在爬到一個狹小的空間,遊戲會在這個空間中進行拾取,並阻止它們再次站立,這會導致小故障。如何將頭撞機轉換爲觸發器將對撞機轉換爲觸發器
獎勵:玩家堅持其他碰撞者,所以如果有人知道如何解決這個問題,將不勝感激。
您可以在對撞機運行時使用對撞機的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建議的解決方案可能是更清潔。但是,當你的問題是如何將對撞機轉換爲觸發器時,我認爲這是值得回答的。
無論如何,取決於你的場景幾何,這總是會變得混亂。 當你有兩個或更多的碰撞體與你的頭撞擊器/觸發器相互作用時,你會遇到問題。
您可以通過保持相互作用對撞機的列表circunvent這個問題,你幾乎必須使用OnCollisionEnter
到撞機註冊到列表中,並OnCollisionExit
註銷它。然後,只有列表爲空時,纔會重新激活碰撞器。
這就是爲什麼我們大多數人使用光線投射而不是碰撞器/觸發器來應對這種情況。
不要嘗試將碰撞器轉換爲觸發器,在頭部周圍設置頭部碰撞器和觸發器,並在玩家爬行並激活觸發器時禁用碰撞器。反之亦然,當他站立時。 – JanR
你也可以從地面向上或從頭向上進行光線投射,以確保有足夠的空間站立,如果不是則阻止站立行動 – JanR