2016-11-27 141 views
1

我几乎完成了我的游戏。不过,我想要产生无限的敌人,就像躲避者游戏一样。但是,我尝试了研究,没有运气。我怎样才能做到这一点?这是我需要做的唯一事情来完成我的比赛。统一:敌人代码

的BlockScript.cs代码(敌人代码)如下:

using UnityEngine; 
using System.Collections; 

public class BlockScript : MonoBehaviour { 

    private GameObject wayPoint; 
    private Vector3 wayPointPos; 
    private Rigidbody2D rigidBody2D; 
    public bool inGround = true; 
    private float jumpForce = 400f; 

    private float speed = 6.0f; 
    void Start() { 

     wayPoint = GameObject.Find("wayPoint"); 
    } 

    private void awake() 
    { 
     rigidBody2D = GetComponent<Rigidbody2D>(); 
    } 


    void Update() { 

     if (inGround) 
     { 
      inGround = false; 

      rigidBody2D.AddForce(new Vector2(0f, jumpForce)); 
     } 

     wayPointPos = new Vector3(wayPoint.transform.position.x, transform.position.y, 
      wayPoint.transform.position.z); 

     transform.position = Vector3.MoveTowards(transform.position, 
      wayPointPos, speed * Time.deltaTime); 

     Vector2 min = Camera.main.ViewportToWorldPoint(new Vector2(0, 0)); 

     if(transform.position.y< min.y) 
     { 
      Destroy(gameObject); 
     } 

    } 
} 
+0

欢迎堆栈溢出。你可以改善你的问题。请阅读[最小,完整和可验证示例](http://stackoverflow.com/help/mcve)。当你的代码没有任何额外的东西显示你的确切问题时,你会向志愿帮助你的人表示敬意。 您可以通过格式化代码以提高可读性并消除滚动来改善您的问题。 – zhon

回答

1

典型的解决方案将是你的敌人(完整的层次结构为GameObject)存储在prefab,这样他们可以重新使用并从代码实例化。然后,创建一个对你的预制件的引用,并在你看到合适的时候实例化它。例如:

public GameObject EnemyPrefab; // assign this in editor 
(...) 
Instantiate(EnemyPrefab, transform.position, transform.rotation); // creates a new enemy 

你可能会需要从一个单独的脚本控制这个功能,而不是从敌人脚本本身(例如创建一个专门的EnemySpawner脚本。)

+0

是的,你必须了解预制件。 OMG! – Fattie

+0

OMG!有效!非常感谢! –

+0

乐意帮忙! – apk