玩家触摸下降 - Unity(C#)

时间:2016-05-30 06:32:40

标签: c# unity3d

我为一个学校项目团结一致。我被困在这一部分,我希望一个块掉落,一旦玩家触及该块并移动到下一个块就被摧毁。有这么多的麻烦,并希望得到一些帮助。 我可以在这里看到我瞄准的概念:http://www.coolmath-games.com/0-b-cubed

2 个答案:

答案 0 :(得分:0)

在每个块上,您需要附加包含OnCollisionExit ()方法(reference)的脚本。传递碰撞参数(参见参考资料)并使用碰撞信息确认离开对撞机的物体是玩家(例如在检查员中标记带有玩家标签的玩家并检查碰撞的对撞机)标记)。

在此方法中,放置代码以使块下降。

确保您已将碰撞器添加到对象中,以便它们进行交互。如果您遇到问题,请回复一些代码,我会回复您。

答案 1 :(得分:0)

实际上你不需要在这里检测到碰撞。这不是必要的。只需将基础立方体位置与玩家立方体位置在x,z平面上进行比较(由于玩家立方体超过基础立方体,因此Y轴应该只有差异)。这里不需要collsions。比将脚本附加到所有基础多维数据集,检查playercube是否悬停其他人(位置检查)而不是在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 如果没有您的层次结构,您的代码并且知道您想要具备什么,很难说出什么是有效的。研究这段代码 - 在对您的需求进行一些调整后它会起作用