在摧毁一个预制件然后重新创建该预制件后,新的克隆对象不会移动

本文关键字:移动 对象 新创建 摧毁 一个 然后 创建 | 更新日期: 2023-09-27 18:18:07

我有代码生成一个旋转球,向左,向右移动和下降。刷出点(空物体)设置在离地面3个单位的地方,所以它会掉到地上并向左或向右移动。我所面临的问题是,在我摧毁了预制体的克隆并将其重置为在原始位置生成并期望它掉落到地面并移动之后,但它只在原始位置生成而没有掉落到地面。任何帮助都将不胜感激。谢谢你!'

public class spawnLemmings : MonoBehaviour {
 //this is the number of lemmings that will spawn
 private int numLemming = 6;
 //Creating a prefab gameObject to attach the prefab to
 public GameObject prefab;
 // Use this for initialization
 void Start () {
    Spawn();
 }
 void FixedUpdate()
 {
    Reset();
 }
 void Spawn()
 {
    //A for loop to create desired number of Lemmings
    for (int i = 0; i < numLemming; i++)
    {
        //This is where the game object is being created
        prefab = (GameObject)Instantiate(prefab, transform.position, Quaternion.identity);

        //This sets the speed of lemming.
        //prefab.GetComponent<lemmingMovement>().speed = Random.Range(3.0f, 4.0f); ///speed = 2.0f;
        //This resets onGround to false
        //prefab.GetComponent<lemmingMovement>().OnGround();
    }
 }
 void Reset()
 {
    if (Input.GetKeyDown("r"))
    {
        GameObject[] lems = GameObject.FindGameObjectsWithTag("Lemmings");
        foreach (GameObject lem in lems)
        {
            Destroy(lem);
        }
        Spawn();
    }
 }
}

"

在摧毁一个预制件然后重新创建该预制件后,新的克隆对象不会移动

prefab = (GameObject)Instantiate(prefab, transform.position, Quaternion.identity);

您正在将您创建的新对象分配给用于克隆对象的预制件

试试这个

//This is where the game object is being created
GameObject o = (GameObject)Instantiate(prefab, transform.position, Quaternion.identity);

从我能收集到的,我在下面声明-

  1. 我不知道你的整个代码是如何工作的,但是从注释中我认为你应该通过取消注释代码来设置速度-

    //This sets the speed of lemming.
    //prefab.GetComponent<lemmingMovement>().speed = Random.Range(3.0f, 4.0f); ///speed = 2.0f;
    
  2. 如果对象是刚体,那么检查新创建的预制件/克隆是否也有刚体。