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

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

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

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

Unity3D

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

Unity

Unityは、Unity Technologiesが開発・販売している、IDEを内蔵するゲームエンジンです。主にC#を用いたプログラミングでコンテンツの開発が可能です。

Q&A

解決済

2回答

3583閲覧

Unityで矢印キーを使って移動する方法について

退会済みユーザー

退会済みユーザー

総合スコア0

C#

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

Unity3D

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

Unity

Unityは、Unity Technologiesが開発・販売している、IDEを内蔵するゲームエンジンです。主にC#を用いたプログラミングでコンテンツの開発が可能です。

0グッド

0クリップ

投稿2018/07/30 07:36

編集2018/07/31 04:13

前提・実現したいこと

Unityで、
上下の矢印キーを押すと前や後ろ(z軸)へ、
左右の矢印キーを押すと左や右(x軸)へ、
みたいな感じでキャラクターを移動させたいです。

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

キーを押しても全く動きません。
rigidbodyとの相性が悪いため、character Controller は使えません。
どうすれば良いでしょうか。

該当のソースコード

C#

1using System.Collections; 2using System.Collections.Generic; 3using UnityEngine; 4 5public class move : MonoBehaviour { 6 public float speed = 10.0f; 7 public Rigidbody rb; 8 9 // Use this for initialization 10 void Start () { 11 rb = GetComponent<Rigidbody>(); 12 } 13 14 // Update is called once per frame 15 void Update () { 16 float x = Input.GetAxis("Horizontal") * speed; 17 float z = Input.GetAxis("Vertical") * speed; 18 rb.AddForce(x, 0, z); 19 20 //上方向キーが押されているかチェック 21 if(Input.GetKey(KeyCode.UpArrow)) 22 { 23 transform.position = new Vector3(0f, transform.position.z + 0.1f, 0f); 24 } else 25 { 26 transform.position = new Vector3(0f, transform.position.x - 0.1f, 0f); 27 } 28 } 29} 30

試したこと

ソースコードを見直したり、もう一度同じ文を一から書いてみたりしました。
しかし治りません…

補足情報

unityのバージョン:2018.2.1f1
visual studioのバージョン:15.7.5

使用しているアセット,ツール
MMD4Mecanim
SAColliderBuilder
Standard Assets

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

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

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

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

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

guest

回答2

0

そのコードだけではどういう操作感を望んでいるのか判らないので最善な回答は出来ません。
矢印で動かすという部分だけ行うならば下記で動かせます。

C#

1using UnityEngine; 2 3public class move : MonoBehaviour 4{ 5 public float speed = 10.0f; 6 public Rigidbody rb; 7 8 void Start() 9 { 10 rb = GetComponent<Rigidbody>(); 11 } 12 13 void Update() 14 { 15 float x = Input.GetAxis("Horizontal") * speed; 16 float z = Input.GetAxis("Vertical") * speed; 17 rb.AddForce(x, 0, z); 18 } 19}

・追記1
AddForceで動かしたいのか直接位置を代入して動かしたいのか
更に言えばZ軸移動をしたいのかY軸移動したいのか未だ不明瞭ですが

AddForceのZ軸移動で左右を除外したいのであれば下記で良いのではないでしょうか。

C#

1using UnityEngine; 2 3public class move : MonoBehaviour 4{ 5 public float speed = 10.0f; 6 public Rigidbody rb; 7 8 void Start() 9 { 10 rb = GetComponent<Rigidbody>(); 11 } 12 13 void Update() 14 { 15 float z = Input.GetAxis("Vertical") * speed; 16 rb.AddForce(0, 0, z); 17 } 18}

若しくは直接位置代入で矢印キー上下のみ使いたい場合は下記を使って下さい。

C#

1using UnityEngine; 2 3public class move : MonoBehaviour 4{ 5 public float speed = 10.0f; 6 public Rigidbody rb; 7 8 void Start() 9 { 10 rb = GetComponent<Rigidbody>(); 11 } 12 13 void Update() 14 { 15 if (Input.GetKey(KeyCode.UpArrow)) 16 { 17 transform.position = new Vector3(0f, 0f, transform.position.z + 0.1f); 18 } 19 else if(Input.GetKey(KeyCode.DownArrow)) 20 { 21 transform.position = new Vector3(0f, 0f, transform.position.z - 0.1f); 22 } 23 } 24}

・追記2
前提・実現したいことを編集してくれて上下左右に動かしたいという事は判りました。
それでしたら最初に書いたコードで良いのではないでしょうか?

投稿2018/07/30 07:56

編集2018/07/31 09:43
Hawn

総合スコア1222

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

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

退会済みユーザー

退会済みユーザー

2018/07/31 02:07

ビルドまでは正常終了しましたが、Playを押して各方向キーを押しても全く動かないんです…
Hawn

2018/07/31 02:13

そちらの環境設定がどうなっているのか判らないので急にビルド後の話をされても困るのですが Unityエディタ上では動いているのでしょうか?
退会済みユーザー

退会済みユーザー

2018/07/31 02:30

「Unityにアタッチ」することまでは出来ましたが、Unity上にある「Play」を押して、矢印キーを入力しても、モデルが全く動かず待機状態になってるんです…
Hawn

2018/07/31 03:02 編集

「Unityにアタッチ」はIDEのデバッグ機能ですよね? それを使用する必要はあるのでしょうか? 何を言っているのか判らない場合はまず「Unityにアタッチ」せずに普通に再生してみてください。
Hawn

2018/07/31 02:33

それとこの「矢印キー」はキーボードの「矢印キー」という認識で問題無いでしょうか?
退会済みユーザー

退会済みユーザー

2018/07/31 03:44

アタッチしないとUnity側にコードが反映されないらしいので、「アタッチせず再生」はできませんでした。 矢印キーはキーボードのやつです。
Hawn

2018/07/31 03:58

>「アタッチせず再生」はできませんでした。 これはどういう状況なのでしょうか? 普通にUnityの再生ボタンを押すだけでゲームプレイが出来ないという事で良いですか? IDEの「Unityにアタッチ」をしないとコードが反映されないというその情報元に興味があります。
退会済みユーザー

退会済みユーザー

2018/07/31 04:09

> IDEの「Unityにアタッチ」をしないとコードが反映されないというその情報元に興味があります。 すいません、改訂される前の情報を読んでいました… 保存 というところを押してから再生ですか?
Hawn

2018/07/31 04:13

改訂される前の情報というのも気になりますが混乱の元なので気にしないでおきます。 >保存 というところを押してから再生ですか? ソースコードの話であればそれを行って下さい。 Ctrl+Sで保存でも良いです。
guest

0

ベストアンサー

キャラモデルにスクリプトをつけるのを忘れていたので付けてみたら、ちゃんと矢印キーで動きました。
ケアレスミスです。ご迷惑をお掛けしました…

投稿2018/07/31 04:21

退会済みユーザー

退会済みユーザー

総合スコア0

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.50%

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

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

質問する

関連した質問