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

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

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

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

Unity

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

Q&A

解決済

1回答

432閲覧

プレイヤーを自動的にy軸上方向に動かしたい。

Imoring

総合スコア4

C#

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

Unity

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

0グッド

0クリップ

投稿2022/09/23 04:00

前提

現在Unityで縦画面の2Dランゲームを作っている初心者です。
ゲーム中はプレイヤーに自動でy軸上方向に走ってもらいたいのでネットを参考に以下のコードを書いたところ、
エラーはないのにプレイヤーが動かない、ということが起きました。
もしかしたらソースコードではなくUnity側の問題である可能性もあるのですが、いかんせん何が問題なのかわからないので
こちらに質問させていただきました。

実現したいこと

・プレイヤーが自動で上方向に移動するようにする。

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

なし

該当のソースコード

C#

1using System.Collections; 2using System.Collections.Generic; 3using UnityEngine; 4 5public class CarMove : MonoBehaviour 6{ 7 public float speed = 10f; //上に移動する速度 8 Rigidbody2D rb; // リジッドボディを使うための宣言 9 10 // Start is called before the first frame update 11 void Start() 12 { 13 //リジッドボディのコンポーネント取得 14 rb = this.gameObject.GetComponent<Rigidbody2D>(); 15 } 16 17 // Update is called once per frame 18 void Update() 19 { 20 21 } 22 23 private void FixedUpdate() 24 { 25 //スピードを与える 26 rb.velocity = new Vector2(rb.velocity.x, speed); 27 } 28 29} 30

試したこと

スピードを与える処理を FixedUpdate ではなく、Start の方に入れてみました。が、動きませんでした。
ためしにスピードを与える処理のxとyを入れ替えて(speed, rb.velocity.y);としてみましたがこちらも動きませんでした。

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

Unity 2021 3.10f1

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

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

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

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

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

KomoriGameDev

2022/09/23 07:27

インスペクタービューのRigidbody2Dの設定が間違っているかもしれないので、その情報を追記すると回答をもらえるかもしれません…
guest

回答1

0

ベストアンサー

あなたのスクリプトを試しましたが、ちゃんと動いてます。
プレイヤーにスクリプトを貼り付け忘れてませんか?
あと、速度を与えるのはStartの中などの1回だけで大丈夫です。

【コメントを受けて追記】
今ある情報だけだと、ちょっとわからないですね。
KomoriGameDev さんのご指摘のとおり、Rigidbody2Dの設定が関係してる気がします。
(一瞬だけ動くのなら空気抵抗が大きすぎるのでしょうか?)
参考までに、私が試した環境のRigidbody2Dの設定を貼っておきます。
イメージ説明

投稿2022/09/23 07:15

編集2022/09/23 09:39
pm_tera

総合スコア133

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

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

Imoring

2022/09/23 08:04

回答ありがとうございます。 プレイヤーを確認してみましたが、やはりスクリプトは貼り付けられていました。 それでも念のためスクリプトを張り付けなおしてみたところ、今度は 開始した1フレーム目だけ与えたスピード分の距離を移動して再び停止する、という挙動になってしまいました。 おっしゃった通りに速度を与えるコードをStartの中に入れても同じ挙動になります。 この場合、何が原因なのでしょうか。
Imoring

2022/09/23 13:50

こちらでも色々と試してみたところ、完全に別の新しいプロジェクトでは正常に動くことがわかりました。 新しいプロジェクトと問題のプロジェクトを比較したところ、今回の容疑者としてアセットストアで手に入れたアセットが浮上してきました。 ですが、そもそもアセットストアからダウンロードしてきたアセットがスクリプトに干渉する、なんてことはあるのでしょうか?
pm_tera

2022/09/23 14:17

アセットの内容が不明なので断言は難しいですが、ありえないとも言い切れない気がします。(特にアセットにスクリプトが含まれる場合は) 干渉している対象がスクリプトなのか、Rigidbodyなのか、他のなにかなのか……と考えてくと、対応は難しそうですね。
Imoring

2022/09/24 00:33

なるほど、ありがとうございました。 とりあえずアセット抜きで作り直してみます。 お世話になりました。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問