繁体   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