我正在为学校的一个项目做一个统一的游戏。我被困在这一部分,我想要一个积木倒下,一旦玩家触摸到积木并移动到下一个积木,就会被摧毁。有这么多麻烦,需要一些帮助。我的目标的概念可以在这里看到:http://www.coolmath-games.com/0-b-cubed
发布于 2016-05-30 15:42:25
在每个块上,您需要附加一个包含OnCollisionExit ()
方法(reference)的脚本。传入碰撞参数(参见参考资料),并使用碰撞信息来确认离开碰撞器的物体是玩家(例如,在检查器中使用播放器标签来标记玩家,并检查碰撞的碰撞器标签)。
在此方法中,放置用于使块下降的代码。
确保已将碰撞器添加到对象中,以便它们进行交互。如果你遇到问题,发回一些代码,我会给你回复的。
发布于 2016-05-30 16:04:27
实际上,您不需要在这里检测冲突。这不是必须的。只需在x,z平面上比较基本立方体的位置和玩家立方体的位置(只有Y轴上的区别,因为玩家立方体在基础立方体之上)。这里不需要拼接。然后你将脚本附加到所有基础立方体上,检查playercube是否悬停在其他立方体上(位置检查),然后在playercube下一次移动时,将rigidbody附加到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很难在没有你的层次结构,你的代码和确切知道你想要什么的情况下告诉你什么可以工作或者不能工作。研究这段代码--在对你的需求进行一些调整之后,它将会工作。
https://stackoverflow.com/questions/37519034
复制相似问题