【Unity】高度な入力をサポートする「Lucid Input」を公開しました






Unity用の高度な入力をサポートするライブラリ「Lucid Input」を公開しました。


使い方に関してはREADMEに全て記載したので、ここではこのライブラリのコンセプトなどを書いていきます。

Lucid Inputとは

「Lucid Input」は絶妙に使いにくいUnityのInputを拡張し、さまざまな機能を追加します。例えば、キーの同時押しを取得したい場合。まず思いつくのはこのようなコードです。
if (Input.GetKeyDown(KeyCode.LeftShift) && Input.GetKeyDown(KeyCode.RightShift))
{
	Debug.Log("Hello?");
}

しかし、このコードは思ったように機能しません。完全に同じフレームに押された場合しか検知してくれないのです。

ユーザーが同時に押したと判断しても、実際にはタイミングに僅かな誤差があるため、ほとんどの場合は反応してくれません。正しく動作させるにはタイミングにある程度の猶予を持たせる必要があります。

Lucid Inputでは、タイミングの誤差も考慮した同時押しを従来のInputとほとんど同じような形で取得できます。 

if (LucidInput.GetKeyDownAll(Key.LeftShift, Key.RightShift))
{
	Debug.Log("Hello!");
}

他にもフリックやホールドなど、さまざまな入力をサポートしています。


...Input System使えばよくね?

そう思った方へ。返す言葉もございません。

ぶっちゃけUnityの入力に関する大半のことはInput Systemを使えば解決するので、もはや入力関連のアセットは不要なんですよね。

ただ、Input Systemは非常に高機能である一方、学習コストが高く、今までのInputに慣れた人からすると取っ付きにくさがあります。また、複雑な入力を行う際には事前に色々と設定が必要なため、ささっと動くものを作りたい時には向いていません。


Lucid Inputは、その名の通り明快でわかりやすいライブラリを目指して作りました。UnityEngine.Inputに準拠した書き方で入力を取得できるため、Unityを覚えたての初心者でも扱いやすく、ゲームジャムなど短期間でゲームを作りたい時にも便利です。

また、UnityEngine.InputとInput Systemの両方に対応しているため、もし仕様変更で切り替えることになってもLucid Inputの部分はそのまま流用できます。

「複雑な入力を取得したい!でもInput Systemはわからん!めんどくさい!」

という需要に応えられるライブラリになったのではないでしょうか。(そもそも、そんな需要があるのかは不明ですが)

あと、本当は独自のアクションを定義する機能もつけたかったんですが...流石に気力が尽きたのでそのうち...


コメント