2014-09-22 112 views
1

我正在製作一個2D遊戲,玩家可以抓住和放下一些物體。我正在使用OnCollisionStay函數來完成它。問題在於我的玩家需要「觸摸」盒子才能抓住它,並且我認爲在沒有網格渲染器的情況下在他的左右兩側製作兩個碰撞盒,並將腳本放到兩個碰撞盒上都可以解決問題。穿過箱子對撞機,但仍然執行OnCollisionStay功能

該劇本可行,但遊戲中的效果就像玩家觸摸並在他周圍的2個隱形框中抓取東西。

有什麼辦法讓不可見的盒子通過我的遊戲對象來抓住它們,同時仍然導致OnCollisionStay函數被執行?

這裏是我的腳本:

#pragma strict 
var agarrado: boolean; 
var cosa : Collision; 
function OnCollisionStay(other : Collision) { 
    if (other.transform.position.y < transform.position.y-1.5) 
     return; 
    if(Input.GetKeyUp("e")){ 
     cosa = other; 
     agarrado= true; 
    } 
} 

function Update() 
{ 
    if(agarrado) 
    { 
     cosa.transform.position.x = transform.position.x; 
    } 
} 
+0

你好,歡迎堆棧溢出!作爲一個領導者:Unity實際上是指微軟的Inversion of Control框架。標記時,請務必使用Unity3D。 – 2014-09-22 15:32:20

+0

@NickUdell感謝您的更正和建議!有什麼辦法可以讓你像工作一樣嗎? – Ezequiel 2014-09-22 16:21:02

+0

隨着聲譽的提高,您可以對評論投票,但我不擔心。很高興幫助。 – 2014-09-22 18:22:08

回答

0

你可以讓你的兩個箱子撞機觸發你的對象,勾選上的檢查框對撞機部件的「isTrigger」複選框,通過它們。

然後只需用OnTriggerStay

OnCollisionStay(other: Collision) 

更換OnCollisionStay成爲

OnTriggerStay(other: Collider) 
+0

工作完美!謝謝! – Ezequiel 2014-09-22 16:28:17

相關問題