###前提・実現したいこと
アニメーション中は追跡プログラムをプログラム解除したいです。
###質問の内容
unityで敵がターゲットを追跡するシステムと、弾に当たるとダメージ表示のアニメーションをするシステムをを作っています。当たり判定とアニメーションが行われる部分の変数を変えてみても、同部分で移動速度を0に変更しても、アニメーションをしたまま引きずられるように移動してしまいます。どうすれば、アニメーション中の移動を止めることができますか。
###発生している問題・エラーメッセージ
敵オブジェクトのダメージ表示のアニメーション中に敵オブジェクトの追跡システムを止めれないことです。
エラーメッセージはありません。
該当のソースコード
using System.Collections; using System.Collections.Generic; using UnityEngine; public class tuiseki : MonoBehaviour { public GameObject targetObj; public GameObject explosion; GameObject Red; RedLifeScript script; public GameObject bullet; public int enemyHP = 3; public Animator animator; int i = 0; public Coroutine coroutine; float x_Abs; float y_Abs; float z_Abs; [SerializeField] float speedParameter = 1; void Start() { Red = GameObject.Find("KadukiRedHairPrefab"); script = Red.GetComponent<RedLifeScript>(); animator = GetComponent<Animator>(); } void Update() { if (i == 1) { enabled = false; } x_Abs = Mathf.Abs(this.gameObject.transform.position.x - targetObj.transform.position.x); y_Abs = Mathf.Abs(this.gameObject.transform.position.y - targetObj.transform.position.y); z_Abs = Mathf.Abs(this.gameObject.transform.position.z - targetObj.transform.position.z); if (coroutine == null)// { coroutine = StartCoroutine(MoveCoroutine()); } } IEnumerator MoveCoroutine() { float speed = speedParameter * Time.deltaTime; while (x_Abs > 0 || y_Abs > 0 || z_Abs > 0) { yield return new WaitForEndOfFrame(); this.gameObject.transform.position = Vector3.MoveTowards(this.gameObject.transform.position, targetObj.transform.position, speed); } print("重なった"); } void OnTriggerEnter(Collider other) { //ターゲットにしたオブジェクトにタグをつけとく if (other.gameObject.tag == "Target") { Debug.Log (other.name + "Enter"); Instantiate(explosion, this.transform.position, Quaternion.identity); this.gameObject.SetActive(false); script.HP = script.HP - 1; script.damage(); } else if (other.gameObject.tag == "Bullet") { i = 1; if (enemyHP <= 0) { this.gameObject.SetActive(false); } else if (enemyHP == 1) { enemyHP = enemyHP - 1; animator.SetTrigger("die"); } else if (enemyHP == 2) { enemyHP = enemyHP - 1; animator.SetTrigger("die"); } else if (enemyHP == 3) { enemyHP = enemyHP - 1; animator.SetTrigger("die"); i = 1; } } } }
###言語名 C#
###試したこと
##invokeをアニメーションをさせる部分の前にいれてみました。
弾との当たり判定の後に敵オブジェクトのの移動速度を0にする部分をつくってみました。
補足情報(FW/ツールのバージョンなど)
unityは2019.14f1のバージョンです。
回答1件
あなたの回答
tips
プレビュー