Unity:玩家重新生成残疾人控制器

时间:2014-09-16 18:06:01

标签: c# unity3d

所以我有这个代码在他击中他的敌人时重新生成我的玩家。一切都很好,但是当球员产卵时,他是无法控制的。由于某种原因,播放器克隆在检查器中未选中控制器脚本。

任何人都知道为什么会发生这种情况&怎么解决呢?

using UnityEngine;
using System.Collections;

public class RedEnemy : MonoBehaviour {

GameObject spawnPoint; GameObject Player; // Use this for initialization void Start () { spawnPoint = GameObject.Find ("spawnPoint"); Player = GameObject.Find ("Player"); } //collider void OnTriggerEnter ( Collider other ){ if (other.tag == "Player") { Destroy (other.gameObject); GameObject Clone; Clone = Instantiate(Player, spawnPoint.transform.position, Quaternion.identity) as GameObject; } }

}

2 个答案:

答案 0 :(得分:0)

您可以简单地重置他们的统计数据并移动它们,而不是摧毁玩家。

或者,您可以在生成新播放器时启用控制器。使用控制器脚本的名称,您可以执行以下操作:

Clone.GetComponent<Controller>().enabled = true;

您可能还想进一步考虑您的设计。让每个敌人拥有对生成点的引用并且玩家有点愚蠢,而那些Find操作将会产生负担,因为你正在产生大量的敌人。理想情况下,由于你只有一名玩家和许多敌人,你将拥有在玩家类中控制玩家的代码,而不是敌人。

答案 1 :(得分:0)

我认为实例化一个不是预制件的Gameobject是个坏主意。您应该只预约预制件,并且您的代码正在实例化GameObject的实例(抱歉冗余)。

当您的实例被销毁时,这可能会导致尝试在其上调用Instantiate而不是预制件时出现意外行为,就像您遇到的那样。

您应该对您的播放器进行预制,然后公开您的Player变量并将其设置为检查员中播放器的预制件。