- 追加された行はこのように表示されます。
- 削除された行は
このように表示されます。
!!!自キャラを動かす(PC)
PCのみ。
参考:
http://docs-jp.unity3d.com/Documentation/Manual/Input.html
「[[キーボード入力|unity_input_keyboard]]」のキー判定から判断してもよいですが、
FPSでよく使う[W][S][A][D]での前進、後退、左旋回、右旋回、などはあらかじめ設定されたInputManagerを経由させます。
!!InputManager
メインメニューの「Edit」-「Project Setting」-「Input」で表示される「InputManager」を開きます。
{{ref_image unity_player_move_01.png}}
すでに、[W][S]キーでの前進/後退はVerticalに、[A][D]キーでの左旋回/右旋回はHorizontalに登録されています。
!!スクリプトでの入力値の取得
スクリプトではフレームごとに呼ばれる「FixedUpdate」関数で呼ぶようにします。
「Update」関数はアイドル時に呼ばれるため速度が安定しないためです。
「Input.GetAxis("Horizontal")」のように取得するとfloatの値が返ります。
-1.0〜+1.0の値が返り、[A][D]キーが押されるかジョイスティックが左右に動く場合に反応します。
void FixedUpdate () {
float moveHorz = Input.GetAxis("Horizontal");
float moveVert = Input.GetAxis("Vertical");
if (moveHorz < 0.0f) {
// 左旋回.
if (Camera.main != null) Camera.main.transform.Rotate(0.0f, -1.0f, 0.0f);
}
if (moveHorz > 0.0f) {
// 右旋回.
if (Camera.main != null) Camera.main.transform.Rotate(0.0f, -1.0f, 0.0f);
}
if (moveVert > 0.0f) {
// 前進.
if (Camera.main != null) Camera.main.transform.Translate(0.0f, 0.0f, 0.01f);
}
if (moveVert < 0.0f) {
// 後退.
if (Camera.main != null) Camera.main.transform.Translate(0.0f, 0.0f, -0.01f);
}
}
キー入力だけでなく、ジョイスティックのような微妙な傾きも検出できます。
また、
if (Input.GetButton("Jump")) {
// ジャンプ.
}
でSpaceキーが押された場合の処理を記述できます。
キーの割り当てについては、InputManagerのInspectorウィンドウのPositive Button/Negative Buttonで変更可能です。
----
{{lastmodified}}