2016-05-30 108 views
0

我正在爲一個學校項目製作一個統一的遊戲。我被困在這一個地方,我想要一個地塊掉下來,一旦玩家觸摸了這個地塊並移動到下一個地塊,就會被摧毀。有這麼多的麻煩,並會喜歡一些援助。 什麼我的目標可以看到這裏的概念:http://www.coolmath-games.com/0-b-cubed玩家觸摸下滑塊 - Unity(C#)

+0

實際上您的問題是什麼?檢查立方體是球員站立或使立方體倒立? –

+0

我不確定如何檢測玩家是否觸摸了該塊,然後是否已經讓該塊掉下來。 – Jarrod

+0

在塊的附加腳本中的OnMouseDown肯定是一個開始。 –

回答

0

在每個塊,您需要附上含有OnCollisionExit()方法(reference)的腳本。傳入碰撞參數(請參閱參考資料)並使用碰撞信息確認離開碰撞器的物體是玩家(例如,在檢查器中用玩家標籤標記玩家並檢查碰撞碰撞器的標籤)。

在這種方法中,放置代碼以使塊落下。

確保您已將碰撞對象添加到對象中,以便它們進行交互。如果遇到問題,請回復一些代碼,我會盡快與您聯繫。

0

其實你不需要在這裏檢測到碰撞。這不是必需的。只需將基座立方體位置與玩家立方體在x,z平面上的位置進行比較(由於玩家立方體超過基座立方體,在Y軸上應該只有不同)。這裏不需要collsions。除了將腳本附加到所有底座立方體上以檢查玩家立方體懸停其他位置(位置檢查)以及在玩家立方體下一次移動之後,您將剛體連接到底座立方體並在一秒鐘後將其摧毀。簡單:)

編輯

的代碼應該是這樣的。或多或少。

GameObject playerCube; //this is reference to Player object 
bool playerEnter = false; 
bool playerLeft = false; 


void Start() 
{ 
    playerCube = Gameoject.Find("PlayerCube"); // here you put the name of your player object as a string. Exactly as it is in the hierarchy 
} 

void Update() 
{ 
if(playerCube.transform.position.x == transform.position.x && playerCube.transform.position.z == transform.position.z) 
{ 
     playerEnter = true; // this checks if player stepped on the cube 
} 
if((playerCube.transform.position.x != transform.position.x || playerCube.transform.position.z != transform.position.z) && playerEnter == true && playerLeft == false) //checks if player left the cube 
{ 
playerLeft = true; // we do this so the code below is executed only once 
    gameObject.AddComponent<Rigidbody>(); // ads rigidbody to your basecube 
    Destroy(gameObject, 1.0f); //destroys baseCube after one second 
} 

我認爲或多或少應該這樣做。在最後的比賽中,我可能會使用協程來完成任務。你還需要考慮如何檢查魔方是否已經被破壞,我的意思是如果玩家可以踩下一個魔方 - 你的遊戲會如何檢測它是否存在?

編輯2 很難說沒有你的層次結構,你的代碼和知道你想要的是什麼。研究此代碼 - 它會在對您的需求進行一些調整後生效

+0

該代碼是什麼樣的?我不知道從哪裏開始。 – Jarrod

+0

我試過這段代碼,但它似乎沒有工作!?玩家的位置將如何知道它與地板(立方體)的位置相同? – Jarrod

+0

糟糕。 if()語句中有錯誤。現在它檢查確切的位置。更正 –