前提・実現したいこと
プレイヤーが持っている刀でエネミーを斬りつける時、プレイヤーの攻撃アニメーションの適当なところでEventを発生させています。
Eventは刀が敵に当たってほしいタイミングと敵を斬り抜けるタイミングで設定し、敵に当たるタイミングにはbool値がtrue、抜けるタイミングにはfalseになるようにしていて、EnemyのOnCollisionEnter関数にはbool値がtrueならDebug.Log("当たっている")を、falseならDebug.Log("当っていない")という処理を書いています。
bool値はfalseで初期化しています。
発生している問題・エラーメッセージ
Eventで設定した関数でbool値を変えているのですが、反映されません。
なぜ反映されないのか知りたいです。
該当のソースコード
c#
1// プレイヤーの攻撃を管理 2 public class PlayerAttack : MonoBehaviour 3 { 4// 攻撃が有効か無効かを設定する変数 5 private bool _isAttack; 6 7 public bool IsAttack { get { return _isAttack; } } 8 9 PlayerAttack() 10 { 11 _isAttack = false; 12 } 13 14 private void Start() 15 { 16 17 } 18 19 private void Update() 20 { 21 //Debug.Log(_isAttack); 22 } 23 24// 攻撃が終わるときに呼ぶ 25 public void OffColliderAttack() 26 { 27 _isAttack = false; 28 Debug.Log("Off"); 29 } 30 31// 攻撃が始まるときに呼ぶ 32 public void OnColliderAttack() 33 { 34 _isAttack = true; 35 Debug.Log("On"); 36 }
c#
1// エネミーの当たり判定を管理 2 public class ZakoCollision : MonoBehaviour 3 { 4 private GameObject _player; 5 private PlayerAttack _playerAttack; 6 private bool _isPlayerAttack; 7 8 // Start is called before the first frame update 9 void Start() 10 { 11// PlayerAttackクラスのプロパティを取得 12 _player = GameObject.FindGameObjectWithTag(EnumExtensions.ToStringFromEnum(EnumExtensions.ObjName.Player)); 13 _playerAttack = _player.GetComponent<PlayerAttack>(); 14 _isPlayerAttack = _playerAttack.IsAttack; 15 } 16 17 // Update is called once per frame 18 void Update() 19 { 20 //Debug.Log(_isPlayerAttack); 21 } 22 23 private void OnCollisionEnter(Collision collision) 24 { 25// 武器が当たっているなら 26 var weaponComponent = collision.gameObject.GetComponent<IWeapon>(); 27 if (weaponComponent != null) 28 { 29 if(_isPlayerAttack) 30 { 31 Debug.Log("剣に当たった"); 32 } 33 else 34 { 35 Debug.Log("剣に当たってない"); 36 } 37 } 38 } 39 }
試したこと
上記のソースを書いてみて、ZakoCollision クラスの_isPlayerAttack が初期値のまま(false)変わりません。
Eventは設定しているので設定し忘れではないです。
なぜ変わらないのでしょうか?
また、Animation Eventで当たり判定を行う場合のやり方があれば教えていただきたいです。
補足情報(FW/ツールのバージョンなど)
Windows10,Visual Studio2019,Unity 2019
ここにより詳細な情報を記載してください。
回答2件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。