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

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

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

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

Unity

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

Q&A

解決済

1回答

695閲覧

Unityで特定のインスペクターを開いていないとRigidbodyの質量や重力が反映されない

inbire

総合スコア10

C#

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

Unity

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

0グッド

0クリップ

投稿2022/01/25 03:25

Unityでゲームを作っているのですが、Playerのインスペクターを開いていないと質量や重力などの変更が反映されません。重力が無くなってしまうとかいうのではなく変更だけが反映されません。
どなたか心当たりのある方はいますでしょうか?
使っているUnityのバージョンは 2021.2.8f1 です。

イメージ説明

↓↓Playerにつけているスクリプトです。

C#

1コード 2using System.Collections; 3using System.Collections.Generic; 4using UnityEngine; 5 6public class Controller: MonoBehaviour 7{ 8 public bool click; 9 public float Jumppower; 10 public Jump script; 11 public GameObject jumpbox; 12 private SpriteRenderer spr; 13 private Rigidbody2D rb; 14 private Animator anim; 15 public float speed; 16 17 18 void Start() 19 { 20 Jumppower = 20; 21 this.jumpbox = GameObject.Find("GroundBox"); 22 this.script = jumpbox.GetComponent<Jump>(); 23 this.rb = GetComponent<Rigidbody2D>(); 24 this.anim = GetComponent<Animator>(); 25 this.spr = GetComponent<SpriteRenderer>(); 26 } 27 28 29 void Update() 30 { 31 bool onground = script.ground; 32 33 //移動 34 float x = Input.GetAxisRaw("Horizontal"); 35 36 37 //反転 38 if (Input.GetKey(KeyCode.A)) 39 { 40 spr.flipX = true; 41 }else if(Input.GetKey(KeyCode.D)) 42 { 43 spr.flipX = false; 44 } 45 46 //移動のアニメーション 47 anim.SetFloat("Speed", Mathf.Abs( x * speed)); 48 49 rb.AddForce(new Vector2( x * speed, 0)); 50 51 //ジャンプのアニメーション 52 anim.SetBool("OnGround", onground); 53 54 55 //ジャンプ 56 if (Input.GetKey(KeyCode.Space)) 57 { 58 if(onground == true) 59 { 60 rb.AddForce(new Vector2(0, Jumppower)); 61 } 62 } 63 64 65 //速度の上限設定 66 float velX = rb.velocity.x; 67 float velY = rb.velocity.y; 68 69 if(Mathf.Abs(velX) > 10) 70 { 71 if (velX > 10.0f) 72 { 73 rb.velocity = new Vector2(10.0f, velY); 74 } 75 if (velX < -10.0f) 76 { 77 rb.velocity = new Vector2(-10.0f, velY); 78 } 79 } 80 81 //左クリックの判定 82 if (Input.GetMouseButtonDown(0)) 83 { 84 click = true; 85 } 86 87 if (Input.GetMouseButtonUp(0)) 88 { 89 click = false; 90 } 91 92 //弾を発射するアニメーション 93 anim.SetBool("Click", click); 94 95 } 96 97}

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

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

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

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

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

guest

回答1

0

自己解決

インスペクターを開くことにより低くなったフレームによって移動速度が変化していただけだったので、Update ではなくて FixedUpdate で移動するようにしたら解決しました。

投稿2022/01/25 06:35

inbire

総合スコア10

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問