2016-09-01 94 views
0

我正在Unity開發2D動作平臺遊戲,我有一個抓取功能,當播放按S時會激活,但我需要它將頭撞擊器轉換爲觸發器,以便當玩家正在爬到一個狹小的空間,遊戲會在這個空間中進行拾取,並阻止它們再次站立,這會導致小故障。如何將頭撞機轉換爲觸發器將對撞機轉換爲觸發器

獎勵:玩家堅持其他碰撞者,所以如果有人知道如何解決這個問題,將不勝感激。

+2

不要嘗試將碰撞器轉換爲觸發器,在頭部周圍設置頭部碰撞器和觸發器,並在玩家爬行並激活觸發器時禁用碰撞器。反之亦然,當他站立時。 – JanR

+1

你也可以從地面向上或從頭向上進行光線投射,以確保有足夠的空間站立,如果不是則阻止站立行動 – JanR

回答

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建議的解決方案可能是更清潔。但是,當你的問題是如何將對撞機轉換爲觸發器時,我認爲這是值得回答的。

無論如何,取決於你的場景幾何,這總是會變得混亂。 當你有兩個或更多的碰撞體與你的頭撞擊器/觸發器相互作用時,你會遇到問題。

您可以通過保持相互作用對撞機的列表circunvent這個問題,你幾乎必須使用OnCollisionEnter到撞機註冊到列表中,並OnCollisionExit註銷它。然後,只有列表爲空時,纔會重新激活碰撞器。

這就是爲什麼我們大多數人使用光線投射而不是碰撞器/觸發器來應對這種情況。

相關問題