2016-11-27 10 views
1

私はほとんどゲームを終えました。しかし、私はavoiderゲームのように無限の敵を生成したい。しかし、私は研究と運が無かった。これどうやってするの?それは私のゲームを終えるために私がする必要がある唯一のものです。Unity:敵の生成コード

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

典型的な解決策は、彼らができるようにprefabに敵(GameObjectのための完全な階層)を格納することですコードから再利用され、インスタンス化されます。次に、プレハブへの参照を作成し、それが適切かどうかを見るたびにインスタンス化します。たとえば:

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

あなたはおそらくない敵スクリプト自体から、別のスクリプトからこの機能を制御する必要があります(例えば、専門EnemySpawnerスクリプト作成。)スタックオーバーフローに

+0

はい、プレハブについて学ぶ必要があります。 – Fattie

+0

OMG!出来た!どうもありがとうございます! –

+0

お手伝いをしてください! – apk