質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.46%
C#

C#はマルチパラダイムプログラミング言語の1つで、命令形・宣言型・関数型・ジェネリック型・コンポーネント指向・オブジェクティブ指向のプログラミング開発すべてに対応しています。

Unity3D

Unity3Dは、ゲームや対話式の3Dアプリケーション、トレーニングシュミレーション、そして医学的・建築学的な技術を可視化する、商業用の開発プラットフォームです。

Q&A

解決済

2回答

3822閲覧

Update内で1回だけ実行させたい

litkt

総合スコア1

C#

C#はマルチパラダイムプログラミング言語の1つで、命令形・宣言型・関数型・ジェネリック型・コンポーネント指向・オブジェクティブ指向のプログラミング開発すべてに対応しています。

Unity3D

Unity3Dは、ゲームや対話式の3Dアプリケーション、トレーニングシュミレーション、そして医学的・建築学的な技術を可視化する、商業用の開発プラットフォームです。

0グッド

0クリップ

投稿2021/01/18 18:30

前提・実現したいこと

Unity上でゲームを作っています。
FixedUpdateの中にGetAxis(WASD)でHorizontalやVerticalを読み取ってプレイヤーが縦横に移動するコードを書いているのですが、
FixedUpdateの中に書いた移動のコードそのもののほかに、移動のし始めに1度だけ(方向転換のとき1度だけ)機能してほしいファンクションがあります。
Inputを毎コンマ秒読み取るためFixedUpdate内に入力の判定を書きたいんですが、1度だけ作動させたいファンクションも意図せずWASDの長押しと一緒に何度も連続で動いてしまいます。

試したこと

検索したらupdate内にtrue/falseを組み込むように出てきたんですがWASD操作が長押しなのでそのまま試しても機能させられませんでした

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答2

0

ベストアンサー

Input.GetKey(KeyCode)とInput.GetKeyDown(KeyCode)の使い分けで実現できませんかね?
Input.GetKeyDown(KeyCode)は長押しの場合はflaseを返すので

方向転換の時のみ(違うキーを押したとき)に処理を行いたいのであれば

//直近で入力されたKeyCodeを保持 KeyCode preKeyCode = null; void FixedUpdate() { if(Input.GetKey(KeyCode.***)) { if(preKeyCode != KeyCode.***) { hoge(); //一度だけ行いたい処理 preKeyCode = KeyCode.***; } ここで移動処理とか? } }

if(Input.GetKey(KeyCode.***))を移動用のキー4つ分用意すれば
実装できそうかなぁ~、と

Input.GetKeyDown(KeyCode)内でif(preKeyCode != KeyCode***)の判定してもありかも?

自分もUnity初心者なので、不備やまったく違う!とかあれば、質問者様以外からもお願いします。
投稿後に気づいたのですが、GetAxis使ってないですね汗
なので、多少でも参考になれば

投稿2021/01/19 04:55

編集2021/01/19 05:16
退会済みユーザー

退会済みユーザー

総合スコア0

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

0

update関数スコープの外側でも有効な値を持たせる方針になると思います。
つまり、update関数が実行しても値をtrueまたはfalseを維持する って事ですね。

C#なので、Unityスクリプトはクラスの体裁になっていると思います。
簡単なところだとクラス変数を持つではないでしょうか。

作ったクラス変数の初期値をfalseとした場合、
falseの場合、1回だけの処理をしてtrueにする
trueの場合、何もしない

投稿2021/01/18 21:13

退会済みユーザー

退会済みユーザー

総合スコア0

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.46%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問