!!!自キャラを動かす(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}}