所以我有这个代码在他击中他的敌人时重新生成我的玩家。一切都很好,但是当球员产卵时,他是无法控制的。由于某种原因,播放器克隆在检查器中未选中控制器脚本。
任何人都知道为什么会发生这种情况&怎么解决呢?
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; } }
}
答案 0 :(得分:0)
您可以简单地重置他们的统计数据并移动它们,而不是摧毁玩家。
或者,您可以在生成新播放器时启用控制器。使用控制器脚本的名称,您可以执行以下操作:
Clone.GetComponent<Controller>().enabled = true;
您可能还想进一步考虑您的设计。让每个敌人拥有对生成点的引用并且玩家有点愚蠢,而那些Find
操作将会产生负担,因为你正在产生大量的敌人。理想情况下,由于你只有一名玩家和许多敌人,你将拥有在玩家类中控制玩家的代码,而不是敌人。
答案 1 :(得分:0)
我认为实例化一个不是预制件的Gameobject
是个坏主意。您应该只预约预制件,并且您的代码正在实例化GameObject
的实例(抱歉冗余)。
当您的实例被销毁时,这可能会导致尝试在其上调用Instantiate
而不是预制件时出现意外行为,就像您遇到的那样。
您应该对您的播放器进行预制,然后公开您的Player
变量并将其设置为检查员中播放器的预制件。