タップすると動きが止まる処理とクリアタイムの計測ができた


時間空いてしまいましたが最近ゲーム制作が進み始めたので久しぶりに書いていきます。

前回記事書いたぐらいの時期に作った処理を書いていきます。

まずはキャラクターをタップした時に動きを止める処理


前回タッチ系の処理を作っていた時についでに作ってみました。

今の所オートラン系のゲームの予定で作っていて割と忙しい操作をするのであったほうが良いかなとおもいました。

ブループリントはこんな感じです。


InputTouchイベントのPressedピンからAutoMoveフラグでBranchしてFalseの時はジャンプ処理に進めてTrueの時は前回と同じ処理でタッチした座標をワールド座標に変換してLineTraceします。

新規でTapCharactrというTraceCannelを作りキャラクターBPにボックスコリジョンを付けトレース応答にTapCharactrを設定してそのチャンネルでトレースします。
(言葉があっているのかよくわからなくなりますが)

HitしたらFingerIndexをStopFingerIndexという変数に保存します。

FingerIndexはタッチした順にtouch1 touch2となる値です。

この処理は必要ないかもしれませんがHitアクターがプレイヤーと同じか判定します。

同じだったらAutoMoveフラグをFalseにしてPress時の処理は終わります。


Releasedピンからの処理です。

AutoMoveフラグがFalseか判定したあとStopFingerIndexがRelease時のFingerIndexと同じ値か判定します。
(この処理で違う指を離したときに処理をさせなくする事ができる)

同じだったらAutoMoveフラグをTrueにします。

最後にStopFingerIndexを違う値にしたけどこれが正しいかわからない。
(空にする代わりに使っている)


クリアタイムを計測する処理


ブループリントはこんな感じです。



画像ではGameStateに書いているのでInterface使ってますがやることはスタートしたら現在時刻をStartTime変数に保存。

Tickで現在時刻から保存しておいたStartTime変数を引いていくことで計測できます。

GetTortalSecondsのあとの計算は小数点第一位までの数値にする処理です。

ポーズしたときはポーズした時刻をPauseStartTime変数に保存してポーズを辞めるときに現在時刻から保存しておいたPauseStartTime変数を引いてスタートしたときに保存したStartTime変数に足すことで正しい時間になります。

0 件のコメント :

コメントを投稿