目標
所以我希望我的游戲支持 xbox / playstation 控制器。我希望操縱桿允許您以一種速度向左/向右移動,無論操縱桿移動多遠。
問題
然而,當我用控制器測驗游戲時,稍微推動操縱桿會使角色移動得更慢。
代碼
void Update() {
//Takes input for running and returns a value from 1 (right) to -1 (left)
xInput = Input.GetAxisRaw("Horizontal");
Jump();
}
當然,這個“錯誤”是由于控制器能夠回傳 -1 和 1 之間的浮點值而引起的。
但是我想知道如何將此值四舍五入為 -1 或 1,或者以某種方式禁用控制器回傳 a浮動值,因為類似
xInput = Input.GetAxisRaw("Horizontal") > 0 ? 1 : -1;
表示 [no input] 將回傳 -1,并且
if (Input.GetAxisRaw("Horizontal") > 0) {
xInput = 1;
} else if (Input.GetAxisRaw("Horizontal") < 0) {
xInput = -1;
}
只是看起來不必要而且不優雅
uj5u.com熱心網友回復:
如果我理解你正確,你正在尋找Math.Sign:
-1如果引數是否定的0如果引數為零1如果引數是肯定的
代碼:
xInput = Math.Sign(Input.GetAxisRaw("Horizontal"));
編輯:
如果我們想要某種死區(即xInput == 0如果幅度小于 some tolerance),請參閱Chuck Walbourn 的評論:
float tolerance = ...;
xInput = Input.GetAxisRaw("Horizontal");
xInput = Math.Abs(xInput) < tolerance
? 0.0
: Math.Sign(xInput);
轉載請註明出處,本文鏈接:https://www.uj5u.com/qukuanlian/408552.html
標籤:
下一篇:為什么我的播放器后退比前退快
