Gamerch
あかさ

キーボードFX

最終更新日時 :
1人が閲覧中
作成者: ユーザー98083
最終更新者: ユーザー98083

キーボードフラグ

押すFX.A

離すFX.Aのように使う


押したり離されたりすると、FixedUpdateが実行されるまでtrueのままになる。

FixedUpdateが実行されるとfalseに戻る。

FixedUpdateはUpdateと呼ばれるタイミングが違うので押す.Aや離す.Aではうまくいかない。

FixedUpdateのプログラムに使う用の押すFX.Aや離すFX.A



プログラム最初に実行(入力)

using System.Collections.Generic;

using UnityEngine;


public class キーボードFX: MonoBehaviour

{

void Start()

{ ボタン入力管理.初期化(); }

void Update()

{ボタン入力管理.更新();}

}



public static class 押すFX

{

public static bool A, B, C, D, E, F, G, H, I, J,

K, L, M, N, O, P, Q, R, S, T,

U, V, W, X, Y, Z;

public static bool スペース, エンター;

public static bool 上, 下, 左, 右;

public static bool 左クリック, 右クリック, 中クリック;

public static bool ホイール上, ホイール下;

}



public static class 入力FX

{

public static bool A, B, C, D, E, F, G, H, I, J,

K, L, M, N, O, P, Q, R, S, T,

U, V, W, X, Y, Z;

public static bool スペース, エンター;

public static bool 上, 下, 左, 右;

public static bool 左クリック, 右クリック, 中クリック;

}


public static class 離すFX

{

public static bool A, B, C, D, E, F, G, H, I, J,

K, L, M, N, O, P, Q, R, S, T,

U, V, W, X, Y, Z;

public static bool スペース, エンター;

public static bool 上, 下, 左, 右;

public static bool 左クリック, 右クリック, 中クリック;

}




public static class ボタン入力管理

{

static Dictionary<string, KeyCode> 対応表 = new Dictionary<string, KeyCode>()

{

{"A", KeyCode.A}, {"B", KeyCode.B}, {"C", KeyCode.C}, {"D", KeyCode.D},

{"E", KeyCode.E}, {"F", KeyCode.F}, {"G", KeyCode.G}, {"H", KeyCode.H},

{"I", KeyCode.I}, {"J", KeyCode.J}, {"K", KeyCode.K}, {"L", KeyCode.L},

{"M", KeyCode.M}, {"N", KeyCode.N}, {"O", KeyCode.O}, {"P", KeyCode.P},

{"Q", KeyCode.Q}, {"R", KeyCode.R}, {"S", KeyCode.S}, {"T", KeyCode.T},

{"U", KeyCode.U}, {"V", KeyCode.V}, {"W", KeyCode.W}, {"X", KeyCode.X},

{"Y", KeyCode.Y}, {"Z", KeyCode.Z},

{"スペース", KeyCode.Space},

{"エンター", KeyCode.Return},

{"上", KeyCode.UpArrow},

{"下", KeyCode.DownArrow},

{"左", KeyCode.LeftArrow},

{"右", KeyCode.RightArrow},

{"左クリック", KeyCode.Mouse0},

{"右クリック", KeyCode.Mouse1},

{"中クリック", KeyCode.Mouse2},

};



public static void 初期化()

{

foreach (var name in 対応表.Keys)

{

設定(typeof(押すFX), name, false);

設定(typeof(入力FX), name, false);

設定(typeof(離すFX), name, false);

}

設定(typeof(押すFX), "ホイール上", false);

設定(typeof(押すFX), "ホイール下", false);

}


public static void 更新()

{

foreach (var 項目 in 対応表)

{

string 名 = 項目.Key;

KeyCode コード = 項目.Value;

if (Input.GetKeyDown(コード)) { 設定(typeof(押すFX), 名, Input.GetKeyDown(コード)); }

if (Input.GetKey(コード)) { 設定(typeof(入力FX), 名, Input.GetKey(コード)); }

if (Input.GetKeyUp(コード)) { 設定(typeof(離すFX), 名, Input.GetKeyUp(コード)); }

}



float wheel = Input.GetAxis("Mouse ScrollWheel");

bool 上 = wheel > 0f;

bool 下 = wheel < 0f;

if (上) { 設定(typeof(押すFX), "ホイール上", 上); }

if(下)設定(typeof(押すFX), "ホイール下", 下);

}


static void 設定(System.Type t, string 名, bool 値)

{

var field = t.GetField(名);

if (field != null)

field.SetValue(null, 値);

}


}


プログラムFixedUpdateの最後に実行(リセット)

Updateは上の物体のプログラムから実行されるがFixedUpdateはそうではないみたい。

Edit → Project Settings → Script Execution Orderからプログラムの順番を設定する


using System.Collections;

using System.Collections.Generic;

using UnityEngine;



public class キーボードFX最後 : MonoBehaviour

{

void Start()

{ }


void FixedUpdate()

{

ボタン入力管理.初期化();

}

}

コメント (キーボードFX)
  • 総コメント数0
この記事を作った人
やり込み度

Wikiにゲームが紐づいていません

編集者紹介

未登録

注目記事
ページトップへ