ゲームが作れるようになるまでがんばる日記

ゲーム制作のことを中心にゲームに関することを書いています

一定値以上の入力があったときに反応する その2

昨日、一定の入力値があったときに反応する処理について書いたが、スティックの入力では−1から+1の値を取ることがある。そこでマイナス方向についても考慮した方法。

#include <cmath>

float input; // 入力 -1->1
float min; // 最小値 0->1
float absInput = abs(input);
float absResult = max( (absInput-min) / (1.0f-min), 0.0f );
float result = std::copysign(absResult, input);

入力値の絶対値を取って求め、copysignを使って元の符号を付けている。