【发布时间】:2016-05-03 08:39:19
【问题描述】:
我的名字是 Victor,我正在 Unity C# 中创建一个涂鸦跳跃游戏,我需要帮助。我到了需要进行物品拾取的步骤。物品拾取是直升机、盾牌等道具。我想创建一个物品拾取器,直升机。我面临的问题是我创建了一个对象,它将成为我的直升机帽子,当你触摸它时它会被摧毁,它会在玩家上方的某个地方生成。 代码是:
public GameObject helicopter;
public Transform trans;
void OnCollisionEnter(Collision col)
{
if (col.gameObject.tag == "Virtaliot")
{
helicopter.SetActive(false);
GameObject helicopters;
helicopters = Instantiate(helicopter, trans.position, trans.rotation) as GameObject;
}
}
这里有一些截图 https://www.dropbox.com/s/gitwl2dly0thj6n/Untitled.png?dl=0
【问题讨论】:
-
那个脚本附在什么上面?播放器还是皮卡?此外,您可能会错过设置父级。另外,由于您没有具体说明什么不起作用,我假设它没有实例化(或者至少看起来不是),如果对象出现,您是否检查了检查器?
-
嘿,你能不能通过teamviewer帮我,我解释的不是很好,请你通过teamviewer检查一下吗?
-
对不起,我没时间。只需提供一些关于哪个对象是该脚本的更多信息,该对象应该在哪里结束(在层次结构中),
trans变量指的是什么以及标签Virtaliot指的是什么。这应该是某人需要帮助您的信息。 -
所以trans在oncolissionentering后直升机需要定位的位置,virtaliot是俄语中的直升飞机,脚本附在trans上,这是它接触后需要产生的地方,并且它不应该处于hierarchy,它需要产生我做的,并且在它接触到玩家之后它需要定位在玩家的顶部!
-
trans真的有碰撞器和刚体吗?这是碰撞/触发检测所需的。我建议将脚本实际放在主要玩家对象上,因为它可能会有一个碰撞器和一个刚体。我对层次结构部分的意思是,您应该使生成的对象成为玩家的子对象(或更准确地说是反式),以便它始终位于正确的位置(与玩家一起移动)。层次结构是场景中所有对象的表示,所以如果一个对象没有出现在层次结构中,它就不在场景中。