簡體   English   中英

玩家接觸時掉落的方塊-Unity(C#)

[英]Falling Blocks on player touch - Unity (C#)

我正在為一個學校項目統一制作游戲。 我停留在這一部分上,我希望一個塊落下並在玩家觸摸該塊並移至下一個塊時將其銷毀。 遇到這么多麻煩,不勝感激。 我的目標概念可以在這里找到: http : //www.coolmath-games.com/0-b-cubed

在每個塊上,您都需要附加一個腳本,其中包含OnCollisionExit ()方法( 參考 )。 傳遞碰撞參數(請參閱參考資料)並使用碰撞信息來確認離開對撞機的對象是玩家(例如,在檢查器中用玩家標簽標記玩家,並檢查碰撞對撞機的標簽)。

在這種方法中,放置使代碼掉落的代碼。

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

實際上,您無需在此處檢測到碰撞。 沒必要。 只需將基本立方體位置與玩家多維數據集在x,z平面中的位置進行比較即可(由於玩家立方體位於基本立方體上方,因此在Y軸上應該只有差異)。 這里不需要合規。 與將腳本附加到所有基礎多維數據集上以檢查playercube以便將其懸停(位置檢查)相比,在下一個動作時,您將剛體附加到basecube上並在第二秒后銷毀它。 簡單:)

編輯

該代碼應如下所示。 或多或少。

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很難說,沒有層次結構,代碼以及確切地想要擁有什么,什么將起作用或不起作用。 學習此代碼-可以根據您的需要進行調整

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM