今回は敵からプレイヤーに向かって火の玉を発射するものを作成してみました 火の玉がせいせいされたあとにプレイヤーに当たってからアニメーションを開始したかったのでメモついでに記録します
成果
ゲーム公開
実装方法
- 生成した後にAnimatorからアニメーションの開始をoffにします
gameobject.GetComponent<Animator>().enabled = false;
2. 任意のタイミングでアニメーションを開始します ここでは,プレイヤーに当たったときにアニメーションを開始しています
_animator.enabled = true; _animator.Play("Base Layer.explosion",0,0);
Scripts
生成するscript(敵にアタッチ)
private void OnTriggerEnter2D(Collider2D other) { if (other.gameObject.CompareTag("Player")) { Debug.Log("プレイヤーが範囲に入った"); isInPlayer = true; // var t = Instantiate(explosionPrefab, explosionPrefab.transform.position,explosionPrefab.transform.rotation); Observable.Interval(TimeSpan.FromSeconds(1f)).Where(_ => isInPlayer).Subscribe(_ => { var t = Instantiate(explosionPrefab, parent.transform.position,explosionPrefab.transform.rotation); // t.GetComponent<Animator>().enabled = false; t.GetComponent<Rigidbody2D>().velocity = other.gameObject.transform.position; }).AddTo(this); } }
火の玉にアタッチ
private void OnTriggerEnter2D(Collider2D other) { if (other.gameObject.CompareTag("Player")) { Debug.Log("アニメーションスタート"); _animator.enabled = true; _animator.Play("Base Layer.explosion",0,0); } }