昨日は、ue4でカスタムボタンクラスを作って、タップイベントをうけとり、ボタンを拡大・縮小させるところまでやったので、今日は拡大・縮小をアニメーションさせる実装にとりかかりました。
ボタンには、ループで実行させるイベントを継承していないので、おそらく自前でスレッドに結びつけるか、自分でスレッドを作ってそこでアニメーション処理を実行する必要があるんだと思います。
このボタンクラスにはおそらく使えませんが、FTickableGameObjectというtickを扱えるクラスなどもあり、選択肢は色々ありそうです。
その中で、自分はtimerクラスを使いました。
timerクラスのc++での使い方は、公式のページにもありますが、これだと大事なところが抜けていて、俺にはよくわからなかったです。
timerはこんな感じで動作させました。
FTimerDelegate timerDel;
FTimerHandle timerHandle;
timerDel.BindUFunction(this, FName("scaleAnimation"));
GetOuter()->GetWorld()->GetTimerManager().SetTimer(timerHandle, timerDel, 0.05, true);
こう書くと、scaleAnimationという名前の関数が0.05秒ごとに呼ばれます。
おそらく、もっと正しい方法があると思いますが、とりあえず機能として
作ることが今は大事だと思ってます。
これからは、gameEngineはunrealをメインに使って、細かいところまで深めていって、contributeすることが目標です。
2018/6/14