コンテンツにスキップ

組み込み関数 - 入力

入力に関するユーティリティ関数


HSTouch クラス

タッチの結果を受け取るクラス。

クラス定義

class HSTouch
{
    public  bool    isTouched;
    public  bool    isEmptyTouch;
    public  int     posX;
    public  int     posY;
}

メンバ変数

isTouched

public bool isTouched

タッチがあったときtrueを返します。

isEmptyTouch

public bool isEmptyTouch

タッチがUIやクリッカブルノードなどクリック可能オブジェクトに何も当たらなかった時trueを返します。

posX

public int posX

タッチがあったときのスクリーンX座標(左上 0, 0)。

posY

public int posY

タッチがあったときのスクリーンY座標(左上 0, 0)。


hsInputIsKeyDown

bool hsInputIsKeyDown(int KeyCode)

指定したキーが押されているかを取得します。KeyCodeはキーコード表の定数を指定します。

以下のhsInputSetKeyValidと共に利用することをお勧めします。

hsInputSetKeyValid

void hsInputSetKeyValid(int KeyCode, bool Valid)

指定したキーをHeliodor側で有効にするかどうかを指定します。KeyCodeはキーコード表の定数を指定します。

falseを設定することでHeliodor側ではキーが押されていないと判断されるようになります。例えば、hsInputSetKeyValid(HSKey_Space, false)を呼び出すことで、プレイヤーアバターがジャンプしないように抑止することが可能です。HeliScript側でhsInputIsKeyDownを利用する場合は先に抑止し、利用が終わったら戻すことでHeliodor側の機能と衝突することを避けられるため設定することをお勧めします。


キーコード表

キーコード 説明
HSKey_Back BackSpaceキー
HSKey_Tab
HSKey_Return Enterキー
HSKey_Shift
HSKey_Control
HSKey_Escape
HSKey_Space
HSKey_Prior PageUpキー
HSKey_Next PageDownキー
HSKey_End
HSKey_Home
HSKey_Left
HSKey_Up
HSKey_Right
HSKey_Down
HSKey_Insert
HSKey_Delete
HSKey_0
HSKey_1
HSKey_2
HSKey_3
HSKey_4
HSKey_5
HSKey_6
HSKey_7
HSKey_8
HSKey_9
HSKey_A
HSKey_B
HSKey_C
HSKey_D
HSKey_E
HSKey_F
HSKey_G
HSKey_H
HSKey_I
HSKey_J
HSKey_K
HSKey_L
HSKey_M
HSKey_N
HSKey_O
HSKey_P
HSKey_Q
HSKey_R
HSKey_S
HSKey_T
HSKey_U
HSKey_V
HSKey_W
HSKey_X
HSKey_Y
HSKey_Z
HSKey_Numpad0
HSKey_Numpad1
HSKey_Numpad2
HSKey_Numpad3
HSKey_Numpad4
HSKey_Numpad5
HSKey_Numpad6
HSKey_Numpad7
HSKey_Numpad8
HSKey_Numpad9
HSKey_Multiply
HSKey_Add
HSKey_Separator
HSKey_Subtract
HSKey_Decimal
HSKey_Divide
HSKey_F1
HSKey_F2
HSKey_F3
HSKey_F4
HSKey_F5
HSKey_F6
HSKey_F7
HSKey_F8
HSKey_F9

hsInputClickButton

bool hsInputClickButton( int hsMouseButton )

指定したマウスキーが押されているかを取得します。hsMouseButtonはマウスキーコード表の定数を指定します。

hsInputGetMousePos

void hsInputGetMousePos( ref int screenX, ref int screenY )

マウスの座標(スクリーン座標)を取得します。左上が(0, 0)になります。

hsInputLButtonClickEmpty

bool hsInputLButtonClickEmpty()

マウスを左クリックしたときにUIやクリッカブルノードなどクリック可能オブジェクトに何も当たらなかった場合trueを返します。

マウスキーコード表

キーコード 説明
HSMouse_Left 左クリック
HSMouse_Center センタークリック
HSMouse_Right 右クリック

hsInputGetTouch

HSTouch hsInputGetTouch( int index )

タッチ情報を返します。index は、N番目にタッチされたインデックスを指定します。 *1番目のタッチ情報が欲しければ (N-1) を index に指定してください。 タッチ情報が指が画面に触れている間だけ取得することができます。画面タッチ時のUIやクリッカブルノードへのレイキャストは指が離れたときに実行されます。 そのためOnClickEmpty・OnClickNode・OnClickedButton・OnClickedAvatarコールバックではタッチ情報を取得できないことに注意してください。

実装例

component TouchTest
{
    bool m_Touched;

    public void Update()
    {
        if(hsIsMobile())
        {
            // 1本目のインプット状況をチェック
            // UIやクリッカブルノードに対するタッチの時は無視したいのでisEmptyTouchもチェックする
            HSTouch touch = hsInputGetTouch(0);
            if(touch.isTouched && touch.isEmptyTouch)
            {
                if(!m_Touched)
                {
                    m_Touched = true;

                    // タッチ処理
                }
            }
            else
            {
                m_Touched = false;
            }
        }
    }
}

hsInputGetTouchCount

int hsInputGetTouchCount()

現在タッチされている指の本数を返します。

int num = hsInputGetTouchCount();

hsInputGetTouchIds

list<int> hsInputGetTouchIds()

現在タッチされている指のIDを、タッチを開始した順に配列で返します。 タッチしていない場合は空配列を返します。

list<int> ids = hsInputGetTouchIds();

hsInputGetTouchById

HSTouch hsInputGetTouchById( int id )

タッチ情報を返します。idは、hsInputGetTouchIds()の返すIDを指定します。 指定したIDが現在のタッチ情報に含まれない場合(指が離れた場合)はnullを返します。 タッチ情報が指が画面に触れている間だけ取得することができます。画面タッチ時のUIやクリッカブルノードへのレイキャストは指が離れたときに実行されます。 そのためOnClickEmpty・OnClickNode・OnClickedButton・OnClickedAvatarコールバックではタッチ情報を取得できないことに注意してください。

実装例

component TouchTest
{
    bool m_Touched;

    public void Update()
    {
        if(hsIsMobile())
        {
            list<int> ids = hsInputGetTouchIds();
            if (ids.Count() == 0) {
                // タッチされていない場合
                m_Touched = false;
                return;
            }
            // ここではもっとも早く触リ始めた指だけ扱う
            HSTouch touch = hsInputGetTouchById(ids[0]);
            if(touch.isTouched && touch.isEmptyTouch)
            {
                if(!m_Touched)
                {
                    m_Touched = true;

                    // タッチ処理
                }
            }
            else
            {
                m_Touched = false;
            }
        }
    }
}

hsInputIsInVirtualPadArea

bool hsInputIsInVirtualPadArea(int x, int y)

指定されたスクリーン座標がバーチャルパッドの上であればtrueを、そうでなければfalseを返します。

HSTouch touch = hsInputGetTouch(0);

int x = touch.posX;
int y = touch.posY;

bool result = hsInputIsInVirtualPadArea(x, y);

hsInputScreenToWorldPos

bool hsInputScreenToWorldPos(int screenX, int screenY, ref Vector3 worldPosition)

スクリーン座標を3D座標に変換します。スクリーン座標にはhsInputGetMousePosやhsInputGetTouchから取得した座標をそのまま使うことができます。

HSTouch touch = hsInputGetTouch(0);

int x = touch.posX;
int y = touch.posY;

Vector3 touch3DPos = new Vector3();
hsInputScreenToWorldPos(x, y, touch3DPos);

VRデバイスキーコード表

キーコード 説明
HSVRDevice_LeftHand 左手コントローラー
HSVRDevice_RightHand 右手コントローラー
HSVRDevice_NoneHand コントローラーなし

VRボタンキーコード表

キーコード 説明
HSVRButton_Trigger トリガー
HSVRButton_Grip グリップ
HSVRButton_AxisPush タッチパッド押し込み(もしくはレバー押し込み)
HSVRButton_Unavailable 利用不可ボタン
HSVRButton_Primary 左手の場合Aボタン、右手の場合Xボタン
HSVRButton_Secondary 左手の場合Bボタン、右手の場合Yボタン

hsInputIsVRDeviceButtonDown

bool hsInputIsVRDeviceButtonDown(int DeviceIndex, int ButtonType)

引数で指定したVRデバイスのボタンが押されている間はtrueを、押されていなければfalseを返します。

hsInputGetVRDevicePos

Vector3 hsInputIsVRDeviceButtonDown(int DeviceIndex)

引数で指定したVRデバイスのワールド座標を返します。

hsInputIsVRDeviceButtonDown

Vector3 hsInputGetVRDeviceRotate(int DeviceIndex)

引数で指定したVRデバイスのワールド回転をオイラー角で返します。

Feedback