[Unity] Visual Scripting : キーボードでオブジェクトを移動させる
![サムネ](https://digilab.tech/materials/wp-content/uploads/2023/11/サムネ-2.jpg)
Unity ビジュアルスクリプティングをつかってキーボードからの信号を取得して、ゲームオブジェクトを動かしてみましょう。
1.CubeにVisual Scriptingを追加する
まず、キーボードから操作するためのゲームオブジェクトを作ります。ここではCubeを作成しています。
![VS_Keybord_obj_move_01 make a Game Object Cube](https://digilab.tech/materials/wp-content/uploads/2023/11/VS_Keybord_obj_move_01-1024x665.png)
次に、作ったゲームオブジェクトにScript Machineを追加します。
Script MachineのNewボタンをクリックして新しいGraphを作成します。
PlayerControllerというGraph名にしました。
次に、Rigidbodyを追加します。今回はRigidbodyのVelocity(速度)を変化させてオブジェクトを動かします。
2. Graphを編集する
まずは、簡単に直接キーボードの値(-1 〜 1)をVelocityに設定してみます。
ボタンを離したとき(Up)に、動きが止まるようにボタンUp時の処理を忘れないようにしましょう。ないと、ボタンを離してもオブジェクトが動き続けてしまいます。
ここで一つ問題があります。キーボードの値をそのまま入力しているため、斜め移動のときだけスピードが早くなってしまいます。
この問題を解決するためにキーボードの値をノーマライズ機能を使います。
【ノーマライズなし】
【ノーマライズあり】
スクリプトにノーマライズ(Vector3)を加えていきます。
ノーマライズすることによって出力ベクトルは合計で1になるように変換されます。
ノーマライズすると、1以下なので移動は遅くなります。そこで変数(Speed)を作り、その変数で速さを調整できるようにします。