1回押すと歩く、二回瞬時に押すとダッシュするように作成したいのですが、どういう条件を与えればダッシュと認識してくれるのでしょうか?
ご教授お願いいたします。
スクリプトの一部を抜き取っています
float x = Input.GetAxisRaw("Horizontal"); //左か右を入力したら if (x != 0) { if (!push) { push = true; //入力方向へ移動 rigidbody2D.velocity = new Vector2(x * speed, rigidbody2D.velocity.y); //localScale.xを-1にすると画像が反転する Vector2 temp = transform.localScale; temp.x = x; transform.localScale = temp; //Wait→Dash anim.SetBool("Dash", true); // 最初に移動キーを押した時にその方向ベクトルを取得 direction = new Vector2(Input.GetAxisRaw("Horizontal"), Input.GetAxisRaw("Vertical")); nowTime = 0f; } else { // 2回目に移動キーを押した時の方向ベクトルを取得 var nowDirection = new Vector2(Input.GetAxisRaw("Horizontal"), Input.GetAxisRaw("Vertical")); // 確認の為、最初に押した方向と2回目に押した方向の角度をコンソールに出力 Debug.Log(Vector2.Angle(nowDirection, direction)); // 押した方向がリミットの角度を越えていない かつ 制限時間内に移動キーが押されていれば走る if (Vector2.Angle(nowDirection, direction) < limitAngle && nowTime <= nextButtonDownTime) { run = true; anim.SetBool("Jump", true); //入力方向へ移動 rigidbody2D.velocity = new Vector2(x * dashSpeed, rigidbody2D.velocity.y); } } //画面中央から左に4移動した位置をユニティちゃんが超えたら if (transform.position.x > mainCamera.transform.position.x - 4) { //カメラの位置を取得 Vector3 cameraPos = mainCamera.transform.position; //プレイヤーの位置から右に4移動した位置を画面中央にする cameraPos.x = transform.position.x + 4; mainCamera.transform.position = cameraPos; } //カメラ表示領域の左下をワールド座標に変換 Vector2 min = Camera.main.ViewportToWorldPoint(new Vector2(0, 0)); //カメラ表示領域の右上をワールド座標に変換 Vector2 max = Camera.main.ViewportToWorldPoint(new Vector2(1, 1)); //プレイヤーのポジションを取得 Vector2 pos = transform.position; //プレイヤーのx座標の移動範囲をClampメソッドで制限 pos.x = Mathf.Clamp(pos.x, min.x + 0.5f, max.x); transform.position = pos; } else { //横移動の速度を0にしてピタッと止まるようにする rigidbody2D.velocity = new Vector2(0, rigidbody2D.velocity.y); //Dash→Wait anim.SetBool("Dash", false); } コード
回答2件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2019/09/03 04:40