好的,我的场景中有2个硬币,他们两个都称为"硬币"如果船通过调用
触发硬币销毁硬币Destroy(this.gameObject);
我还有一个未激活的着陆器(通过取消选中检查器中对象名称旁边的复选标记)
所以当硬币被摧毁时我必须要硬币我希望着陆器处于活动状态。我已经完成了这项工作,并在硬币脚本中使用此代码:
var landing : GameObject;
function OnTriggerEnter2D (other : Collider2D) {
Destroy(this.gameObject);
if(Coin){
Debug.Log("Object exist");
}else{
landing.SetActive(true);
}
}
我得到的结果就是当我击中第一枚硬币时硬币会被破坏(那应该发生什么)但是当我击中下一枚硬币时它会摧毁而不会使着陆器处于活动状态,所以如果没有硬币,怎样才能使着陆器处于活动状态存在于现场
答案 0 :(得分:1)
我尽可能地编辑了这个问题所以它可以工作,但保持简单,显然你正试图保持它。我没有测试过,因为我现在正在工作。如果没有弄错的话,我认为它应该从我的头脑中起作用。让我知道。
另外,如果我这样做是为了通用,我会制作一个“硬币监视器”游戏对象'并将填充数组或更好的硬币列表,并告诉经理减去硬币,直到满足最终条件。然后它将适用于N个硬币。
另一种方法可能是标记硬币,然后在gameObject的start()处进行游戏对象查找,但如果是我,我仍然会更喜欢管理器解决方案,并且更加强大和灵活,因为您可以扩展它制作一堆与你游戏中的硬币相关的额外内容。
这是因为你在激活landing.SetActive()之前销毁()硬币,只需将线条Destroy()移到最后,在if(硬币)结束之后,它应该修复它。
// Coin gameObject script - This sample code requires that you Tag your Ship gameObject: "Ship"
// Note this is not too efficient as you have to assign trough the Inspector!
public var landing : GameObject;
public var myOtherCoin : GameObject;
function OnTriggerEnter2D (other : Collider2D) {
if ( other.tag == "Ship" )
{
if ( myOtherCoin != null )
{
Debug.Log( "There's still another coin, Self destructing..." );
Destroy( this.gameObject );
}
else
{
Debug.Log( "There's no other coins.. Activating Landing!" );
landing.SetActive( true );
Debug.Log( "Landing Active... Self destructing now!" );
Destroy( this.gameObject );
}
}
}

答案 1 :(得分:0)
如果我是你,我会在场景中创建另一个GameObject,一个各种仲裁者,其中包含一个包含现有硬币数量的脚本(开头为2个)和一个递减此计数器的方法。 然后,在销毁你的硬币之前,你会在仲裁器中调用这种方法。此外,在减量方法中,您可以检查硬币的数量,如果您刚刚将它减少到0,则自动激活着陆垫。它定期检查整个场景中的硬币肯定便宜了。