いつもお世話になっております。
CommonUIのAnalogSliderにてMinValue, MaxValueを変更するとアナログスティックで左右を入力した際のリピート間隔が増減する事象を確認しております。
例えばMinValueを0、MaxValueを100にし、StepSizeを1にした場合に十字キーでは操作感が変わりませんが、アナログスティックではリピート操作が著しく遅くなる状況となります。(状況を添付の動画にて確認いただけます)
AnalogSliderではアナログ操作時にMinValue, MaxValueを0~1にする前提の挙動が実装されている状況となりますでしょうか。
何卒ご確認のほどよろしくお願いいたします。
[Attachment Removed]
お世話になっております。サンプルプロジェクトを共有頂きありがとうございます。
SAnalogSlider の Value はコメントどおり 0〜1 の正規化として実装されています。
/** A value that drives where the slider handle appears. Value is normalized between 0 and 1. */
SLATE_ATTRIBUTE(float, Value)
アナログの「速いときのリピート間隔」は StepSize に比例するようになっており、StepSize = 0.01 (デフォルト)は 最短でも約 0.03 秒/ステップ、StepSize = 1 は最短でも 3 秒/ステップになり、アナログだけが極端に遅く感じます。また、Min / Max はリピートには使われません。また、十字キーが変わりにくい理由
左右は OnNavigation で ナビゲーションのリピートが効き、ここでは StepSize の ± だけで、上記の FastestStepTime は使いません。
const float StepSizeValue = StepSize.Get();
const float AnalogStepThreshold = 0.5f;
const float SlowestStepTime = 1.0f;
const float TimeToSlideFromZeroToOneAtFullSpeed = 3;
const float FastestStepTime = TimeToSlideFromZeroToOneAtFullSpeed * StepSizeValue;
アナログスティックでの入力を変更する場合は、SAnalogSliderの継承先クラスで上記のSAnalogSlider::OnAnalogValueChanged をオーバーライドしてロジックを変更して頂くか、エンジンで上記をカスタマイズすることで、0~1を超えた値に対しても独自の制御を加えることが可能になります。
[Attachment Removed]
ご確認いただきありがとうございます。
AnalogSliderでアナログスティックを考慮する場合は標準ではMinValue, MaxValueが0~1である必要がある旨承知いたしました。
今回はSAnalogSliderを継承したクラスにてOnAnalogValueChangedをオーバーライドする対応を検討したいと思います。
以上、よろしくお願いいたします。
[Attachment Removed]