如何在不破坏游戏对象的情况下创建一个spawner

时间:2018-04-01 21:47:07

标签: javascript unity3d

所以我在团结时使用fps时遇到了问题。代码完成了我想要的所有内容,但我确实遇到了游戏破坏问题。

首先:在我的游戏中我有一个在场景中的兽人然后我的产生者将对象克隆到我想要的地方

问题:原始兽人向玩家移动,当它被射击并最终被摧毁时,生成器再也无法克隆它有没有办法解决这个问题?

谢谢任何回答我问题的人,非常感谢,因为我是团结的初学者,c#和js。

var Distance; 
var Target:Transform; 
var lookAtDistance = 25.0; 
var attackRange = 15.0; 
var moveSpeed = 5.0; 
var Damping = 6.0; 

function Update () { 
    Distance = Vector3.Distance(Target.position, transform.position); 
    var rotation = Quaternion.LookRotation(Target.position - transform.position); 

    transform.rotation = Quaternion.Slerp(transform.rotation, rotation, Time.deltaTime * Damping); 
    transform.Translate(Vector3.forward * moveSpeed * Time.deltaTime); 
} 

1 个答案:

答案 0 :(得分:0)

听起来你需要预制兽人的预制件。我建议你在Unity项目中创建一个名为Prefabs的文件夹。在你的场景视图中,选择你想要在你的生成器中生成的兽人,并将整个对象拖到这个文件夹中。这会创建一个预制件。

现在您可以从场景中删除orc。为了产生兽人,现在你去你的产卵者,然后将预制物拖到你产生兽人的地方。到目前为止示例:

public class SpawnPoint : MonoBehaviour {
    public GameObject creatureToSpawn;
    public void Start()
    {
        Spawn();
    }

    public void Spawn(GameObject ObjectToSpawn)
    {
        Instantiate(creatureToSpawn, transform.position, Quaternion.identity);
    }
}

在此Spawner的检查器中,脚本所在的位置将是您可以将预制件拖入的元素。

修改 当您实例化一个对象时,您正在克隆该对象的确切方式。因此,如果您实例化一个对象的克隆,该对象具有一个具有该玩家目标的脚本,那么您现在克隆的对象也将以该玩家为目标。如果实例化非活动对象的克隆,则克隆将处于非活动状态。因此,你的另一种选择是使原始版本处于非活动状态,并将其生成如下:

public class randomSpawner : MonoBehaviour {
    public GameObject cloneObject;
    // Use this for initialization
    void Start () {

    }

    // Update is called once per frame
    void Update () {
        if(Input.GetKeyDown(KeyCode.Space))
        {
            GameObject temp = Instantiate(cloneObject, transform.position, Quaternion.identity);
            temp.SetActive(true);
        }
    }
}