0
親スクリプトのゲームオブジェクトZombieArmy
と添付スクリプトZombie
があります。新しいゾンビが子供としてインスタンス化されるたびにTransformが変更されます。ゾンビにそれぞれのreSpawn()から一意のトランスフォームを持たせながら、zombieArmyトランスフォームが変わることを防ぎ、Vector3(0,0,0)でそのトランスフォームを固定したままにする方法を教えてください。親子は、新しい子をインスタンス化するたびに変更されます。
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;
}
}
'zombieArmy'だけでインスタンス化し'で使用されている() '、それはトランスフォームTransform zombieArmyを変更しないように保証されています。これは、Transform zombieArmyがこのコード以外の場所で変更されたことを意味し、この問題を解決するために他の関連クラスを参照する必要があります。 – BrokenBacon
私は以前の投稿も読んでおり、基本設定に問題があるようです。 Unityのベストプラクティスのいくつかを学ぶためにUnityのチュートリアルを参照することをお勧めします。また、クラスとその役割を設計するためにもっと調べると役に立ちます。ゾンビはスポーナーのポジションを知る必要がありますか?コードが書かれる前に考慮すべき事項です。 Googleソリッドの原則やその他の有名なOOPデザインのコンセプトは、素晴らしいゲームの開発に役立ちます。 – BrokenBacon
このコードは正常です。他の場所で何かが間違っているはずです。ゾンビ軍の変形にアクセスする他の場所を調べる。 – Bijan