2017-06-18 71 views
0

我有一個Parent GameObject ZombieArmy,附帶腳本Zombie;每當一個新的殭屍作爲一個孩子被實例化時,其變換就會改變。我該如何防止殭屍部落變換髮生變化,並保持其變形固定在Vector3(0,0,0),同時讓殭屍從每個reSpawn()都有自己獨特的變換?每次我實例化一個新的孩子時,父變換髮生變化

using System.Collections; 
using System.Collections.Generic; 
using UnityEngine; 

public class Zombie : MonoBehaviour { 

    public GameObject zombiePrefab; 
    public Transform zombieArmy; 
    public Transform zombieSpawnPoint; 
    private Transform[] spawnPositions; 
    public bool reSpawn = false; 
    private bool lastToggle = false; 
    private GameObject spawn; 

    // Use this for initialization 
    void Start() { 
     spawnPositions = zombieSpawnPoint.GetComponentsInChildren<Transform>(); 
    } 

    private void NewSpawn() //spawn location of newZombie 
    { 
     if (reSpawn) 
     { 
      int i = Random.Range(1, spawnPositions.Length); 
      transform.position = spawnPositions[i].transform.position; 
      spawn = Instantiate(zombiePrefab, this.transform.position, this.transform.rotation, zombieArmy); 
      // zombieArmy.transform.position = new Vector3(0, 0, 0); 
     } 
    } 


    void Update() { //T-toggle 
     if (reSpawn != lastToggle) 
     { 
      NewSpawn(); 
      reSpawn = false; 
     } 
     else 
      lastToggle = reSpawn; 
    } 
} 
+1

從代碼'變換zombieArmy'只用在'實例化()',這是保證不改變'變形殭屍軍團'。這意味着'Transform zombieArmy'在其他地方沒有改變,你應該查找或提供其他相關的類來解決這個問題 – BrokenBacon

+1

我也讀過你的前一篇文章,看起來你有基本設置的麻煩。我建議你去查看Unity的教程來學習Unity中的一些最佳實踐。此外,如果您更多地查看設計課程及其角色,這將會很有幫助。像「殭屍需要知道產卵者的立場?」這樣的問題。在編寫代碼之前應該考慮什麼。 Google SOLID原則和其他着名的OOP設計概念,因爲它們將幫助您開發出色的遊戲。 – BrokenBacon

+1

這段代碼看起來不錯。其他地方一定有問題。找出其他地方訪問殭屍軍隊的變化。 – Bijan

回答

0

如果我正確理解你,那殭屍腳本會附加到父級遊戲對象,對不對? 那麼你NewSpawn()方法有點不正確。這行

transform.position = spawnPositions[i].transform.position; 

實際上是改變變換父遊戲物體的,就像你說的,因爲那是你告訴它該怎麼做。 如果你想要的是發生在隨機選擇的重生點的位置,在每個新生成的對象,試試這個來代替:

int i = Random.Range(0, spawnPositions.Length); // Any reason the 0th index shouldn't be used? 

    spawn = Instantiate(zombiePrefab, this.transform); 
    spawn.transform.position = spawnPositions[i].transform.position; 
    spawn.transform.rotation = spawnPositions[i].transform.rotation; 
相關問題