セキュリティキーパッド
SecurityKeypad プレハブは、ワールド内に設置する物理的でインタラクトできるキーパッドです。プレイヤーが近づいて番号ボタンを押してロールのパスワードを入力すると、十分な桁数が入力された時点でシステムが自動的にチェックします — 専用の送信ボタンはありません。
仕組み
- 数字ボタン(0–9)、全消去 キー、バックスペース キーがあります。
- 入力は 4 桁のパスワード(
SS_Config.KEYPAD_PASSWORD_LENGTH)で、4 桁目が入力された瞬間に自動でチェックされます。 - パスワードがプレイヤーがまだ持っていないロールのものと一致すると、そのロールが 付与 されます。
- プレイヤーがすでにそのロールを 一時的に 保持している場合、同じパスワードを再度入力すると、再付与ではなく 取り消し になります — キーパッドはログアウトとしても機能します。永続的に 保持されているロール(ホワイトリスト、インスタンスオーナー、または Keypad Permanent による永続付与)はこの方法では取り消せず、そのパスワードを再入力しても間違ったパスワードを入力した場合と見分けがつきません。
- 入力したパスワードが、プレイヤーがすでに保持しているロールと レイヤー を共有するロールのものである場合、まず古いロールが自動的に入れ替わります — パネルから付与したときと同じ自動入れ替えの挙動です。
- 結果はキーパッドの小さなディスプレイに一瞬だけ表示されます — ロール名に加えて、そのロールの色で 「Granted」 または 「Removed」、あるいは赤色で 「Access Denied」 が表示され、その後プレイヤーの持続的な 「Logged in as」 ステータス表示に戻ります。詳細は下記の ログイン中のロール表示 を参照してください。
- キー入力のたびに音が鳴り、パスワードが拒否されたときやレート制限にかかったときには別の音が鳴ります。
キーパッドのパスワードは ロールごとに一意 であることが前提です。誤って 2 つのロールに同じパスワードを設定してしまった場合、Roles リストで先に並んでいる方だけがキーパッドから到達可能になります。
Logged In As Status
付与・取り消し・拒否の際に一瞬表示される結果とは別に、キーパッドのディスプレイには、プレイヤーが現在保持しているロールに応じて 「Logged in as <Role>」 が常時表示されます — これは結果表示のように数秒で消えるものではなく、変更する理由が生じるまでそのまま表示され続けます。
- 正しいパスワードを入力すると、一瞬 「<Role> Granted」(ログアウトの場合は 「Removed」)が表示され、その後 「Logged in as <Role>」 に落ち着きます。
- 間違ったパスワードを入力すると、一瞬 「Access Denied」 が表示され、その後プレイヤーが実際にログインしているロールの表示に戻ります — 誤った入力によってステータスの表示を見失うことはありません。
- プレイヤーが複数のロールを保持している場合、ディスプレイには常に最も上位のロールが表示されます — ロール階層 に基づくもので、必ずしも直前に入力されたロールとは限りません。例えば、すでに「Security」としてログインしているプレイヤーが(Security の下位にある)「DJ」のパスワードを入力すると、一瞬「DJ Granted」と表示された後、ディスプレイは「Logged in as Security」に戻ります。これは依然として Security が最も上位のロールだからです。
- 現在のロールからログアウトすると、ディスプレイはその時点でプレイヤーが保持している最も上位のロールに更新されるか、他に何も保持していなければ空白に戻ります。
キーパッドは、そのキーパッド自身 に入力されたパスワードの結果については、設定なしで常に正しく表示します。ホワイトリスト、管理パネル、または別のキーパッドなど 他の場所 で付与されたロールも反映させたい場合は、Inspector 内のメインの Security System オブジェクトにある Security Keypads リストにそのキーパッドを追加してください。これはキーパッドごとに一度だけ必要な、このキーパッド間同期専用のセットアップ手順です。リストに含めていないキーパッドでも、自分自身のパスワードに対しては問題なく機能しますが、他の場所でプレイヤーのロールが変わってもリアルタイムには更新されません。
レート制限
各キーパッドには、1 分間のローリングウィンドウ内で受け付ける間違ったパスワードの回数に設定可能な上限があり、それを超えるとそれ以上の入力チェックを一時的に拒否し、代わりに 「Too Many Attempts」 を表示します。
- この制限は キーパッドごと・プレイヤーごと に追跡されます — あるキーパッドでブロックされても、他のプレイヤーがブロックされることはなく、ワールド内の別のキーパッドがブロックされることもありません。
- 1 分間のウィンドウは 最初の 誤入力からカウントが始まり、そこから 1 分が経過すると自動的にリセットされます。
- 正しいパスワードを入力しても、カウンターは リセットされません — これは意図的な仕様で、たとえ 1 つでも有効なパスワードを知っているプレイヤーが、それを使ってカウンターをクリアし、知らないパスワードを推測し続けることができないようにするためです。
Inspector リファレンス
SS_SecurityKeypad
| フィールド | 説明 |
|---|---|
| Security System | このキーパッドがロールを付与・剥奪する対象となる SS_SecuritySystem です。 |
| UI | このキーパッドのディスプレイを制御する SS_SecurityKeypadUI コンポーネントです。 |
| Audio Source | キーパッドの効果音を再生するためのソースです。 |
| Key Press Sound | 数字・特殊キーを問わず、キー入力のたびに再生されます。 |
| Access Denied Sound | 間違ったパスワードの入力時、およびレート制限にかかったときに再生されます。 |
| Max Password Attempts Per Minute | このキーパッドがそれ以上のチェックをブロックするまでに許容する、1 分間あたりの失敗回数です(デフォルト 5)。 |
SS_SecurityKeypadUI
| フィールド | 説明 |
|---|---|
| Display | 入力中の桁や結果を表示するテキスト要素です。 |
| Access Denied Text | 間違ったパスワードの際に表示されるテキストです(デフォルト "Access Denied")。 |
| Blocked Text | レート制限にかかった際に表示されるテキストです(デフォルト "Too Many Attempts")。 |
| Denied Color | 拒否・ブロック時のメッセージに使われる色です(デフォルトは赤)。 |
| Default Color | 入力中の桁に使われる色です(デフォルトは白)。 |
| Result Display Seconds | 一時的な結果メッセージ(付与・取り消し・拒否・ブロック)が、持続的な 「Logged in as」 ステータスに戻るまで画面に表示され続ける秒数です(デフォルト 3)。 |
SS_SecuritySystem
| フィールド | 説明 |
|---|---|
| Security Keypads | 他の場所でロールが変更された際に 「Logged in as」 ステータスをリアルタイムで更新すべきキーパッドの一覧です — 上記の キーパッド間の同期 を参照してください。 |
複数のキーパッドで同じ SS_SecuritySystem を共有できます — それぞれが独自のレート制限、サウンド、ディスプレイを持ちますが、いずれも同じロール状態に対して付与・剥奪を行います。