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

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

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

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

Unity3D

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

Q&A

解決済

1回答

1386閲覧

ボールゲームの動作について

takigawa777

総合スコア21

C#

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

Unity3D

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

0グッド

0クリップ

投稿2019/03/01 02:30

前提・実現したいこと

ボールゲーム

ボールゲームという奥から流れてくるボールを手前の板で止めるというゲームを作っているのですが上手く動作しません

発生している問題・エラーメッセージ

エラーは起きていないと思います

エラーメッセージ

該当のソースコード

ソースコード

void Update()
{
transform.position += new Vector3(Input.GetAxis("Horizontal") * Time.deltaTime, 0f, 0f);
Debug.Log(transform.position.x);
}

試したこと

左に問題があった時の豆電球マークが出ていたのでコードを見直して出ないようになったのですがバグは出ずに左右に動くという動作をしないままです

補足情報(FW/ツールのバージョンなど)

Unity2018,3,0f2です
ここにより詳細な情報を記載してください。

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

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

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

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

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

nskydiving

2019/03/01 02:45

Debug.Log(transform.position.x);は何と出力されていますか?
takigawa777

2019/03/01 02:48

再生ボタンを押した後のコードは 0 UnityEngine.Debug:Log(Object) PaddleScript:Update() (at Assets/Scripts/PaddleScript.cs:17) とずっと流れています
nskydiving

2019/03/01 02:59

Debug.Log("Input.GetAxis:" + Input.GetAxis("Horizontal")); Debug.Log("Time.deltaTime:" + Time.deltaTime); はどう出力されるでしょうか? という感じで順番にデバッグしてみてください。
takigawa777

2019/03/01 03:04

Input.GetAxis:0 UnityEngine.Debug:Log(Object) PaddleScript:Update() (at Assets/Scripts/PaddleScript.cs:17) Time.deltaTime:0.006895903 UnityEngine.Debug:Log(Object) PaddleScript:Update() (at Assets/Scripts/PaddleScript.cs:17) と流れました。
guest

回答1

0

ベストアンサー

Input.GetAxis:0

キーボードの左右キーを押すと、数値が出力されるはずです。

ということなので、Input.GetAxis("Horizontal")で値が取得できていません。

ゲームパッドを認識していないか、InputManager の設定に誤りがある可能性が高いですので、確認してください。
ゲームパッドの認識の仕方はゲームパッドの種類のよって異なりますので、その点も注意してください。

参考:
Input.GetAxisとInputManagerの関連設定について

以下を追記

C#

1using System.Collections; 2using System.Collections.Generic; 3using UnityEngine; 4 5public class PaddleScript : MonoBehaviour 6{ 7 // Start is called before the first frame update 8 void Start() 9 { 10 11 } 12 13 // Update is called once per frame 14 void Update() 15 { 16 transform.position += new Vector3(Input.GetAxis("Horizontal") * Time.deltaTime, 0f, 0f); 17 Debug.Log("Time.deltaTime:" + Time.deltaTime); 18 } 19}

提示していただいたこちらのコードで問題なく動作することは確認しました。

色々といじってみましたがまだ分かりませんでした。キーボードで矢印キーなどを触ったらボールが転がってくる下の板ごとボールを受け止める板も引っ付いて動いてしまう状態です。

ということですので、オブジェクトとスクリプトの関連付けがうまくいっていないのだと思います。

公式のチュートリアルを参考にしてみてください。

参考:
はじめてのUnity>プレイヤーの移動

投稿2019/03/01 03:46

編集2019/03/02 00:58
nskydiving

総合スコア6500

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

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

takigawa777

2019/03/01 05:40

色々といじってみましたがまだ分かりませんでした。キーボードで矢印キーなどを触ったらボールが転がってくる下の板ごとボールを受け止める板も引っ付いて動いてしまう状態です。
nskydiving

2019/03/01 06:35

提示していただいているコードはゲームパッド操作のものであり、キーボード操作についてはコードを提示していただいていないので、分かりません。 提示していただいている Update メソッド以外にも別の Update メソッドがあって、見ているコードが意図したものと違っているのではないですか?
takigawa777

2019/03/01 07:19

知識不足申し訳ないです、別サイトにて入門用として用意されていたコードを見て作っていたのでゲームパッド用とは知りませんでした 一応今の段階で書いているコードを貼りますが、自分でも再度ゲームパッド操作で動くか試してみます using System.Collections; using System.Collections.Generic; using UnityEngine; public class PaddleScript : MonoBehaviour { // Start is called before the first frame update void Start() { } // Update is called once per frame void Update() { transform.position += new Vector3(Input.GetAxis("Horizontal") * Time.deltaTime, 0f, 0f); Debug.Log("Time.deltaTime:" + Time.deltaTime); } }
nskydiving

2019/03/02 01:02

すみません、回答のゲームパッドでしか操作できないという情報は誤りでキーボードでも操作可能でした。 それに合わせて回答を全体的に修正させていただきましたので、ご確認ください。
takigawa777

2019/03/02 02:12

こちらこそ申し訳ないです。 確認したところ、パドルにのみ紐づけすれば良いスクリプトが下のフロアという板にも紐づけされてしまっていました。 色々と教えて頂きありがとうございます、ベストアンサーにさせて頂きます。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問