取り組んでいること
私は、以下に示す画像1のようなアイテムに当たることで敵の攻撃を指定された時間止めるギミックを作り、それが視覚的にもわかりやすくなるように画像2のようなエフェクトを付けました。
画像1 画像2
これを実現するためにスクリプトではこのように書きました。
public class StopAttackItem : MonoBehaviour { private GameObject[] targets; [SerializeField] private GameObject effectPrefabs; [SerializeField] private AudioClip stopSound; [SerializeField] private GameObject Enemy1, Enemy2; public EnemyShotShell enemyShotS; void Start() { targets = GameObject.FindGameObjectsWithTag("EnemyShotShell"); } private void OnTriggerEnter(Collider other) { if (other.gameObject.CompareTag("Player")) { for (int i = 0; i < targets.Length; i++) { targets[i].GetComponent<EnemyShotShell>().addTime(5.0f); } Destroy(gameObject); AudioSource.PlayClipAtPoint(stopSound, transform.position); //画像2は固定砲台のように動かない敵なのでこのスクリプトだけで実現できた GameObject effect1 = Instantiate(effectPrefabs, Enemy1.transform.position, Quaternion.identity); GameObject effect2 = Instantiate(effectPrefabs, Enemy2.transform.position, Quaternion.identity); Destroy(effect1, enemyShotS.stopTimer); Destroy(effect2, enemyShotS.stopTimer); } } }
わからないこと
私は、NavMeshで動かしている敵にも画像2のような状態で移動し続けられるように以下のようなスクリプトで行いました。
GameObject effect2 = Instantiate(effectPrefabs, Enemy2.transform.position, Quaternion.identity);
しかし、結果は画像3のようにEnemy2は先へ進んでいくがエフェクトはそれに追従せず同じ場所に居続ける結果となりました。
画像3
知りたいこと
動いているオブジェクトに常にエフェクトが纏わりつくようにするには何回もPrefabをインスタンス化してその都度オブジェクトのtranform.positionを取得しなければならないのでしょうか?1回のインスタンス化で実現することは不可能すか?
わかる方がいらしたら教えていただきたいです!
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2020/02/12 07:47