Unity 移動 Input 慣性が乗る

フォーラム(掲示板)ルール
フォーラム(掲示板)ルールはこちら  ※コードを貼り付ける場合は [code][/code] で囲って下さい。詳しくはこちら

トピックに返信する


答えを正確にご入力ください。答えられるかどうかでスパムボットか否かを判定します。

BBCode: ON
[img]: ON
[flash]: OFF
[url]: ON
スマイリー: OFF

トピックのレビュー
   

展開ビュー トピックのレビュー: Unity 移動 Input 慣性が乗る

Re: Unity 移動 Input 慣性が乗る

#6

by hide » 6年前

いや使ってるAPIのリファレンスくらいは覗いてから質問するもんでしょうよ。
そもそも回答が完全でなかったのはあなたの質問が曖昧すぎたからでしょう?
すくなくともフォーラムルールを読んだ上での質問には見えません。

Re: Unity 移動 Input 慣性が乗る

#5

by uni » 6年前

なるほど、inputのところが自分の考えとあっていんかったところなのですね。

Unity 移動 で調べてみてもInputを使っているとこが多かったし、transformを使ってみてと言われても使っているし,その上でInputを調べてほしかったといわれても少しこんがらがってしまいます。

Inputで調べてみると原因がわかると示唆していただいていたら初心者の私でもすぐにたどり着けたと思います。

何はともあれ教えていただいた内容で試してみたいと思います。
ありがとうございました。

Re: Unity 移動 Input 慣性が乗る

#4

by sadora3 » 6年前

Input.GetAxisがどのような処理なのか、ご存知でしょうか?今回の場合は、こちらをご自分で調べて欲しかったです。
恐らく以下のサイトが参考になるかと思われます。(グーグルで「Input.GetAxis」と検索すると、出てきます。)
https://qiita.com/RyotaMurohoshi/items/ ... 056affa2df
こちらのサイトに、「例えば上記のコードで上矢印キーを押した場合、dyにはfloat型で正の値が代入されます。押し始めてすぐのフレームでは0.01Fなど小さな値ですが、連続で押し続けることで、徐々に値が増えていき、1.0Fになります。1.0Fになった後にボタンを押し続けても、それ以上値は増えません。」とあるように、Input.GetAxisを移動量に使えば、慣性のように働いてしまうのはお分かりになられるかと思います。
また、これはUnityのデバッグ機能を用いることで、ご自分で検証することも可能です。
Update関数に、以下の処理を追加して動かしてみて下さい。(Input.GetAxis("Vertical")の値が、コンソールウィンドウに表示されます。)
Debug.Log(Input.GetAxis("Vertical"));

上記を踏まえて、どのように改善したらいいのかと申しますと、キーボードを使うのか、パッドを使うのかにより処理が異なってきます。

キーボードの場合は、以下のようになると思います。

コード:

if (Input.GetKey(KeyCode.RightArrow)) {
    transform.Translate(speed, 0.0f, 0.0f);
} else if (Input.GetKey(KeyCode.LeftArrow)) {
    transform.Translate(-speed, 0.0f, 0.0f);
}

if (Input.GetKey(KeyCode.UpArrow)) {
    transform.Translate(0.0f, speed, 0.0f);
} else if (Input.GetKey(KeyCode.DownArrow)) {
    transform.Translate(0.0f, -speed, 0.0f);
}

ゲームパッドを使う場合は、以下のようになると思います。

コード:

if (Input.GetAxis("Horizontal") > 0.1f) {
    transform.Translate(speed, 0.0f, 0.0f);
} else if (Input.GetAxis("Horizontal") < -0.1f) {
    transform.Translate(-speed, 0.0f, 0.0f);
}

if (Input.GetAxis("Vertical") > 0.1f) {
    transform.Translate(0.0f, speed, 0.0f);
} else if (Input.GetAxis("Vertical") < -0.1f) {
    transform.Translate(0.0f, -speed, 0.0f);
}

Re: Unity 移動 Input 慣性が乗る

#3

by uni » 6年前

アップデートに
transform.Translate(Input.GetAxis("Horizontal") * speed, Input.GetAxis("Vertical") * speed, 0); // speed = 0.5f
という処理のみで動かしています。

だいたいどこのサイトを見てもこの書き方だったので、Inputを使う場合はこうするものだと勝手に思い込んでコードを張るのをサボりました。

ええと、transformで動かしてとのことだったのですが、これですと今使っているものがそうですよね?
つまりは反対のRigidbodyの書き方を探せばよいのでしょうか?

もしよろしかったらUnity 移動で検索してみてください

Re: Unity 移動 Input 慣性が乗る

#2

by sadora3 » 6年前

ソースコードを見ない事にはなんとも言えないのですが、恐らくRigidbodyで動かしているのではないでしょうか?
transformを使って移動させてみて下さい。
正確な回答が欲しいのでしたら、移動処理を行っている部分のソースコードを提示してください。

グーグルで「Unity 移動」と検索すると、恐らくuniさんが求めている答えが沢山出てくると思います。
今のうちに自分で調べておく癖は付けた方がいいですよ。
問題解決のため調べるスキルは、(特にゲームエンジンでの)ゲーム制作には必須ですので、是非心掛けてみて下さい。
自分で調べて、どうしても答えが見つからなかったときに、この掲示板を頼って下さいね。

Unity 移動 Input 慣性が乗る

#1

by uni » 6年前

Unityでキャラクターの移動処理をinputで行うと慣性が乗ってしまいます

これを切ることってできませんか?

ページトップ