【问题标题】:Unity3d c# help, spawn itempickupsUnity3d c#帮助,生成itempickups
【发布时间】: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 真的有碰撞器和刚体吗?这是碰撞/触发检测所需的。我建议将脚本实际放在主要玩家对象上,因为它可能会有一个碰撞器和一个刚体。我对层次结构部分的意思是,您应该使生成的对象成为玩家的子对象(或更准确地说是反式),以便它始终位于正确的位置(与玩家一起移动)。层次结构是场景中所有对象的表示,所以如果一个对象没有出现在层次结构中,它就不在场景中。

标签: c# unity3d


【解决方案1】:

这并不是最好的方法。我建议您根本不需要实例化帽子。一个更好的方法是将你的帽子对象添加为检查器中玩家的子对象,并在Start 上调用SetActive(false)。然后,在您的播放器脚本中获得对帽子的引用后,您可以简单地使用

public GameObject helicopterChild; //reference to hat

void OnCollisionEnter(Collision col)
{
    if (col.gameObject.tag == "Virtaliot") 
    {
        helicopterChild.SetActive(True); //Show the hat on the players head
        Destroy(col.gameObject); //Destroy the pickup shown in the world
        // you will also need to make the player fly up
    }
}

打开帽子,破坏拾取并应用飞行效果。这假设您正在其他地方停止飞行效果。

【讨论】:

  • 等等,你在脚本中说我是播放器,然后我需要销毁播放器?此脚本是否附加到播放器?
  • 是的,这是附在播放器上的。 Destroy(col.gameObject) 部分将摧毁你碰撞的东西(帽子拾取器),而不是玩家。
  • 哦,我明白了,谢谢,我会试试的,我会告诉你的!
  • 太棒了!很高兴我能帮上忙。
【解决方案2】:

SetActive() 函数上方编写Instantiate() 函数。我认为脚本在您禁用它后会停止,因此它永远不会达到实例化。也许你可以写一个调试日志,这样你就可以看到它是否被执行了。

【讨论】:

  • 嘿,它不起作用,你可以通过团队查看器帮助我吗,你能做到吗?我会很感激这个!
  • 我认为问题不在于代码,而在于雇佣制度,我认为那里有问题,我没有正确地联系孩子或类似的事情!
  • 所以..你能帮帮我吗?
猜你喜欢
  • 1970-01-01
  • 2012-04-29
  • 2015-06-27
  • 1970-01-01
  • 1970-01-01
  • 2012-09-24
  • 2015-03-16
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多