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

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

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

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

Q&A

解決済

2回答

2941閲覧

unity キーが押された時間だけ速度を加えたい

kassi

総合スコア3

C#

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

0グッド

0クリップ

投稿2020/12/24 04:41

spaceを押した時間の取得と、spaceを押した瞬間にボールに力(Spaceを押した時間を含む)を加えられるようににしたいです。
しかし、if (Input.GetKeyUp (KeyCode.Space))がうまく動かないのはなぜなのでしょうか?

プログラム
using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class BallManager : MonoBehaviour {

public float INIT_DEGREE = 75f; public float INIT_SPEED = 40f; float Spacetime; // Use this for initialization void Start () { shotBall (); } // Update is called once per frame void Update () { if(Input.GetKey(KeyCode.Space)){ //Spacetimeに経過時間を記録 Spacetime += Time.deltaTime; } } void shotBall() { if (Input.GetKeyUp (KeyCode.Space)) { Vector2 vel = Vector2.zero; vel.y = INIT_SPEED * Mathf.Sin (Spacetime * Mathf.PI / 180f); GetComponent<Rigidbody2D> ().velocity = vel; } }

}

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

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

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

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

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

guest

回答2

0

ベストアンサー

そもそもshotBallStartでしか呼ばれていません。
この為、shotBallは開始時の1回しか実行されません。
Updateから呼ぶようにしてください。

投稿2020/12/24 07:57

YAmaGNZ

総合スコア10489

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

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

0

Input.GetKeyUpについて調べてみましたが、こちらは一回限りのイベントとして使うようです。
ボールが「押された」判定はしてくれますが、ボールが「押され続けている」判定にはInput.GetKeyを使うよう記載がありました。
今回の場合は押された瞬間の判定は行われていると思います。

※修正
上記の内容は誤りでした。
GetKeyUpは「ボタンを連打している」状態です。
押され続けている間1フレーム毎にTrueを返します。
GetKeyUpは「ボタンが押されなくなった時」の状態です。
ボタンを離した時に1フレームだけTrueを返します。
GetKeyDownが「ボタンを押した時」の状態です。
ボタンを押した時にTrueを返します。

今回はボタンを押した瞬間にボールに力が加わってほしいとのことなのでGetKeyDownを使えば正しく動作するのではないでしょうか。

参考サイト
https://riptutorial.com/ja/unity3d/example/11765/getkey%E3%81%A8getkeydown%E3%81%A8getkeyup%E3%81%AE%E9%81%95%E3%81%84
https://qiita.com/RyotaMurohoshi/items/a5cde3c17831adda12db

投稿2020/12/24 06:22

編集2020/12/24 06:45
退会済みユーザー

退会済みユーザー

総合スコア0

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

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

YAmaGNZ

2020/12/24 07:55

GetKeyが現在の状態 GetKeyDownが押されていない状態から押された状態に変化した時 GetKeyUpが押されている状態から押されていない状態に変化した時 です。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.35%

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

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

質問する

関連した質問