幻日幻月環

作成した伺かの更新情報などをつぶやくところ

手をかさねるというマウス動作

この記事は伺か Advent Calendar 2015の11日目に投稿したものです。

マウス操作による触り反応といえば、撫で、つつき、それとホイールクリックと回転が主です。
右クリックジェスチャー機能を使っているゴーストもいますが、もう少し直感的な操作方法を1つあげてみます。

マウスを置きっぱなしにした時に発生する処理を紹介します。
手をかさねる、という表現に使えるでしょう。
例えば、頭に手を置いたままにするとか、手を重ねたままにするとか、比較的トークも書きやすく、なおかつユーザ側からしても直感的な操作となります。
ただし、ゴーストでは一般的な動作ではないため、readmeやメニューの表示時など、そういった反応があることを示しておいた方が良いでしょう。


ここでは、以下2つの里々のサンプルを提示します。
・タイマを使った簡単だけど時間がばらつく方法
・さくらスクリプトを使ったちょっと難しいけど時間が厳密に指定出来る方法

#########################
#その1、比較的簡単な方法
#利点・処理が簡単
#欠点・時間にばらつきがでる
#########################
#マウスを3秒置きっぱなしにすると反応する
#ただし、1秒に1回決まった時間に判定されるため、
#実際は2.1~2.9秒程度と時間がばらつく

#-SHIORIイベント----------------
*OnMouseEnter【タブ】(喋ってる時除外)
$(R3)(R4)手重ねタイマ【タブ】3

*OnMouseLeave
$(R3)(R4)手重ねタイマ【タブ】0

#-ここまでSHIORIイベント------------

#-発動条件-------------------
#喋ってる時や選択肢表示中に
#反応するのが困る場合、条件をつける
#(Status)は半角カンマが含まれているため、
#区切りには半角カンマを使わないこと
#不要なら、「【タブ】(喋ってる時除外)」を削除
@喋ってる時除外
(calc、
(count、(Status)、talking)==0&&
(count、(Status)、choosing)==0

#-ここまで発動条件---------------

#-トーク実行------------------
#以下、タイマの実行
#ここに書かなかった部位は、無視されるため、
#作りたいキャラクター・部位だけ書けばOK
#なお、0がメインキャラ、1がサブキャラ、以降2~
*0Head手重ね【タブ】(喋ってる時除外)
>0頭手重ね

*0Bust手重ね【タブ】(喋ってる時除外)
$0胸手重ね回数=(0胸手重ね回数)+1
>0胸手重ね

#-ここまでトーク実行--------------

#-トークの内容-----------------
*0頭手重ね
:なんで頭に手を置くの?

*0頭手重ね
:子供じゃないもんっ!

*0胸手重ね
:変態!

#-ここまでトークの内容-------------

#タイマは全てセーブデータに残るため、
#*OnSatoriLoadに以下1行を足しておくのを推奨
#$全タイマ解除【タブ】実行

#########################
#ここまで比較的簡単な方法
#########################



#########################
#その2、さくらスクリプト使った方法
#利点・時間が厳密
#欠点・色々出力するのでスクリプトログが汚くなる
#########################
#マウスを2.5秒(2500ミリ秒)置くと反応する
#以下が「*」ではなく「@」なのは、
#「*」だと「\1」が先頭に入り、\Cが無効になるため
#「*」で(set,スクリプトの一番頭,\C)を先頭に書いてもOK
#時間の部分を0にすると、タイマーキャンセル

#-SHIORIイベント----------------
@OnMouseEnter【タブ】(喋ってる時除外)
\C\![timerraise,2500,1,OnHandOverlay,(R3),(R4)]

@OnMouseLeave
\C\![timerraise,0,1,OnHandOverlay]

#-ここまでSHIORIイベント------------

#-発動条件-------------------
#トーク中と、選択肢表示中は出なくする
@喋ってる時除外
(calc、
(count、(Status)、talking)==0&&
(count、(Status)、choosing)==0


#-ここまで発動条件---------------

#-トーク実行------------------
#以下、タイマの実行
#トークを書かなかった部位は無視されるため、
#作りたいキャラクター・部位だけ書けばOK
#回数は、トークが無い場合はカウントしない
*OnHandOverlay【タブ】(喋ってる時除外)
(when、(文「(R0)(R1)手重ね」の存在)、
#対応するトークが無い場合、ここに処理が来ない
#手重ねの回数をカウント
#変数が存在しない場合にエラーが出ないよう対応
(set、(R0)(R1)手重ね回数、
(when、(変数「(R0)(R1)手重ね回数」の存在)、
((R0)(R1)手重ね回数)、

)+1

#トークの呼び出し
((R0)(R1)手重ね)


#-ここまでトーク実行--------------

#-トークの内容-----------------
*0Head手重ね
:なんで頭に手を置くの?

*0Head頭手重ね
:子供じゃないもんっ!

*0Bust手重ね
:変態!

#-ここまでトークの内容-------------

#########################
#ここまでさくらスクリプト使った方法
#########################
PageTop

コメント


管理者にだけ表示を許可する