実現したいこと
AnimatorのAny StateからAttackモーションへ遷移するStateを作成したい。
発生している問題
Playerタグが付いたオブジェクトに向かってvelosityにて移動するEnemyオブジェクトを作成しました。
Playerオブジェクトが一定範囲に入ったら攻撃モーションに移るように、
animatorのAnyStateから伸びるAttackStateを作成し、Transitionを繋ぎました。
ここまでは問題ないのですが、AttackAnimationを設定すると、
Enemyオブジェクトが全く動かなくなりました。
補足情報
デバックログにてVelosityの値を見たところちゃんと値は渡されているようです。
以下がEnemyオブジェクト移動ソースコードとなります。
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class EnemyController : MonoBehaviour
{
[SerializeField] private float xspeed = 0.5f;
[SerializeField] private float yspeed = 0.25f;
[SerializeField] private Animator animator;
private Transform _myTransform; private Transform _playerTransfrom; private Rigidbody2D _rigidbody2D; private GameObject player; private EnemyStatus _status; // Start is called before the first frame update void Start() { player = GameObject.FindGameObjectWithTag("Player"); _rigidbody2D = GetComponent<Rigidbody2D>(); _status = GetComponent<EnemyStatus>(); } void Update() { _myTransform = this.gameObject.GetComponent<Transform>(); _playerTransfrom = player.transform; float x = _playerTransfrom.position.x - _myTransform.position.x; float y = _playerTransfrom.position.y - _myTransform.position.y; //Debug.Log("Enemy?x?" + x + " y?" + y); if ((x > 1.0f || x < -1.0f) && (y > 0.5f || y < -0.5f)) { Vector2 velosity = new Vector2(x * xspeed, y * yspeed); //Debug.Log(velosity); _rigidbody2D.velocity = velosity; animator.SetFloat("MoveSpeed", new Vector2(x * xspeed, y * yspeed).magnitude); } }
}