見出し画像

ダンスゲーを作りたい#8 ジョイスティックと連動して上下運動する

前回ようやく上下しない問題に片が付いたので、今回は上下運動を入力と連動させていきます。

初めのほうでタッチ入力を受け取るみたいなこと言いましたが、正直新規に考えて作ってってのは面倒なわけで、

そんな私に恵みのアセット、JoystickPackが降ってきたのでくっつけてみました。

JoystickPackをつかう

アセットをインポートしたら、Prefabsってフォルダができるので、その中から使いたいやつを、uGUIを置いてるキャンバスの下に配置して完了です。

うん。簡単。

ジョイスティックの入力値はx,y方向にそれぞれ-1~1のfloat値で受け取れます。

後々入力値を受け取るところはまとめたいので、適当なオブジェクトからアクセスする用にスクリプトを書きます。

using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class Input_manager : MonoBehaviour{
   
   public FixedJoystick joy; //JoyStickコンポーネント
   
   void Start(){
       joy=GameObject.Find("Fixed Joystick").GetComponent<FixedJoystick>();
   }
   public float joyY;
   public float joyX;
   void Update(){
       //値の受け取り
       joyX = joy.Horizontal; 
       joyY = joy.Vertical; 
   }
}  

んでもっていい感じにアクセスして値をもらって反映します。

using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class IKmove : MonoBehaviour
{
   [SerializeField]Transform Leftfoot;
   [SerializeField]Transform Rightfoot;
   [SerializeField]Transform Root;
   public float Pos;

   ////追加箇所////
   //上のスクリプトをコンポーネントとして取得
   public Input_manager joy;
   void Start(){
       joy=GameObject.Find("GameManager").GetComponent<Input_manager>();
   }


   void Update(){
       ////追加箇所////
       //値受け取り
       Pos=joy.joyY; 
       //最大値、標準値、最小値を設定
       float Hipposmax=0f;
       float Hipposcen=-0.05f;
       float Hipposmin=-0.25f;
       //入力に対応するよう計算。
       float realpos=Hipposcen;
       if(Pos==0f){
           realpos=Hipposcen;
       }else if(Pos>0f){
           realpos=(Hipposmax-Hipposcen)*Pos+Hipposcen;
       }else if(Pos<0f){
           realpos=(Hipposcen-Hipposmin)*Pos+Hipposcen;
       }



       Vector3 rootpos=Root.position;
       rootpos.y=realpos;

       Root.position=rootpos;

       // 座標を取得
       Vector3 lpos = Leftfoot.position;
       Vector3 rpos = Rightfoot.position;

       if(lpos.y<0.0f){
           lpos.y = 0f;
       }
       if(rpos.y<0.0f){
           rpos.y = 0f;
       }

       

       Leftfoot.position = lpos; 
       Rightfoot.position = rpos; 
   }
}

一応捕捉しますが、GameManagerって名前の適当なオブジェクトにInput_managerを、Harukoちゃん本体にIKmoveをつけてる感じです。

これでジョイスティック入力でいい感じ上下運動できるようになりました。

画像1

今後

現手法はボーンの可動幅の適正値を自動算出できないので、毎回調べなきゃいけなくてめんどいので、横はあとでにしちゃいますが一通りできるようになりましたね。

次回はボタン入力で手足のアニメーションが再生されるように設定していきます。

ってことはひょっとしてモーション作んなきゃいけない?

めんどくせぇ~。今じゃねぇ~。

適当なアニメーションで済ましちゃったらよっぽど面倒だったんだなって思ってください。

この記事が気に入ったらサポートをしてみませんか?