前提・実現したいこと
現在マウスカーソルでクリックでキャラクターの移動を処理するコードを書いています.マウスカーソルを制御するCursorManagerからプレイヤーキャラクターのMove関数を呼び出すことで実行しようと考えています.
発生している問題
この場合,マウスをクリックしている間は移動が続くので問題は起きないのですが,マウスのクリックをやめたときにMove関数が呼び出されないのでrigidbody2dのvelocityを制御できず,プレイヤーが目的地に達しても動きを止めることができません.
該当のソースコード
C#
1public class CursorManager : MonoBehaviour 2{ 3 public Texture2D cursorTextureSword; 4 5 private Vector2 m_mousePosition; 6 private Vector2 m_targetPosition; 7 private Vector2 m_targetMobPosition; 8 9 private GameObject player; 10 private Rigidbody2D playerRB; 11 private Player playerScript; 12 13 if (Input.GetMouseButton(0)) 14 { 15 m_mousePosition = Input.mousePosition; 16 m_targetPosition = Camera.main.ScreenToWorldPoint(m_mousePosition); 17 18 playerScript.Move(m_targetPosition); 19 20 } 21}
public void Move(Vector2 targetPosition) { Walk(); Vector2 moveDirection = (targetPosition - m_rigidbody2d.position).normalized; m_rigidbody2d.velocity = m_movingSpeed * moveDirection; if(m_Scale.x * m_rigidbody2d.velocity.x < 0) { m_Scale.x = -m_Scale.x; transform.localScale = m_Scale; } if ((m_rigidbody2d.velocity).magnitude > 0 && (targetPosition - m_rigidbody2d.position).magnitude < 0.2f) { Idle(); } else if (m_rigidbody2d.velocity == Vector2.zero) { Idle(); } }
###試したこと
CursorManagerのほうでInput.GetMouseButtonUp(0)を用いてマウスクリックが終わった時の処理を別に書くことも考えたのですが,キャラクターの移動に関するコードをMove関数内でひとまとめに処理する方法が思いつきませんでした.
なんとかMove関数内でVelocityの制御を完結させる方法はないでしょうか?
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2019/06/07 18:01
2019/06/08 04:38