【问题标题】:Destroying game object销毁游戏对象
【发布时间】:2016-01-27 18:30:26
【问题描述】:

我在 Unity 中创建了一个简单的 2D 触摸游戏,我在场景顶部每 3 秒产生一次尖刺,当尖刺落下时,玩家会在尖刺击中下面的角色之前轻按尖刺,但是,当我测试时游戏中,当我点击尖峰(游戏对象)时,它会破坏场景中的所有尖峰(游戏对象)。代码如下:

public GameObject spike;
public float spawnTime1 = 1f;

// Use this for initialization
void Start () {
    InvokeRepeating ("SpawnSpike", spawnTime1, spawnTime1);

}

// Update is called once per frame
void Update () {
    for (var i = 0; i < Input.touchCount; ++i) {
        if (Input.GetTouch(i).phase == TouchPhase.Began) {
            Destroy (gameObject);
        }
    }
}

void SpawnSpike () {

    var newSpike = GameObject.Instantiate (spike); 
    newSpike.transform.position = new Vector3 (Random.Range(-3, 3), 11f, 0f);

【问题讨论】:

  • 也许您的游戏对象是嵌套的,而您破坏了它们的“父对象”?你能告诉我们层次结构吗?
  • 这个脚本是某种独特的“游戏管理器”吗?如果是这样,那很好。但是在您的Update() 中,您如何计算gameObject 是什么?
  • @d4Rk。是的,当然:dropbox.com/s/z2asmjn4muv5tw0/…
  • @andeart 在“Update()”中,我有我的触摸功能,当玩家触摸场景时,它会计算按下的触摸次数并破坏作为尖峰(精灵)的“gameObject”。 ??????
  • 到目前为止似乎还可以。我认为您需要共享更多代码。此代码位于何处?它是一种单一行为吗?但是你会用Destroy (gameObject); 毁掉自己所以可能不会..

标签: c# unity3d sprite gameobject


【解决方案1】:

看起来你在运行时正在破坏这个类似游戏管理器的脚本本身

void Update () {
    for (var i = 0; i < Input.touchCount; ++i) {
        if (Input.GetTouch(i).phase == TouchPhase.Began) {
            Destroy (gameObject);
        }
    }
}

Destroy (gameObject); 行正在破坏它自己的游戏对象,我猜它是被实例化的尖峰的父级(?);因此一次性摧毁所有的尖刺。

我建议使用光线投射来确定是否有任何尖峰被点击和/或哪个尖峰被点击,然后仅销毁该尖峰的游戏对象。这是一个很好的reference。如果您仍然觉得难以理解,我还建议您寻找相关的教程。

希望对你有帮助!

更新

这里有一些示例代码可以帮助您:

    if (Input.GetTouch(i).phase == TouchPhase.Began) {
        Vector3 pos = Camera.main.ScreenToWorldPoint (Input.GetTouch(i).position);
        RaycastHit2D hit = Physics2D.Raycast(pos, Vector2.zero);
        if (hit != null && hit.gameObject.CompareTag("spike") && hit.collider != null) {
            Debug.Log ("I'm tapping "+hit.gameObject.name);
            Destroy(hit.gameObject);
        }
    }

此特定代码将要求您的尖峰预制件(模板)具有标签“尖峰”。我还建议您将此代码放在某种全局“游戏管理器”脚本的Update()(而不是 Spike 脚本中)中,这样您就不会过度处理触摸。

【讨论】:

  • 感谢您的帮助!真的很感激! ???
  • @JohnGool 很高兴我能帮上忙。祝你好运!
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-01-01
  • 2018-04-17
  • 2012-12-06
  • 2015-08-30
相关资源
最近更新 更多