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

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

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

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

iOS

iOSとは、Apple製のスマートフォンであるiPhoneやタブレット端末のiPadに搭載しているオペレーションシステム(OS)です。その他にもiPod touch・Apple TVにも搭載されています。

MacOS(OSX)

MacOSとは、Appleの開発していたGUI(グラフィカルユーザーインターフェース)を採用したオペレーションシステム(OS)です。Macintoshと共に、市場に出てGUIの普及に大きく貢献しました。

Xcode

Xcodeはソフトウェア開発のための、Appleの統合開発環境です。Mac OSXに付随するかたちで配布されています。

Unity

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

Q&A

解決済

1回答

2534閲覧

[Unity]rb2d.velocityでTime.deltaTimeは使えないのか

akisan55

総合スコア49

C#

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

iOS

iOSとは、Apple製のスマートフォンであるiPhoneやタブレット端末のiPadに搭載しているオペレーションシステム(OS)です。その他にもiPod touch・Apple TVにも搭載されています。

MacOS(OSX)

MacOSとは、Appleの開発していたGUI(グラフィカルユーザーインターフェース)を採用したオペレーションシステム(OS)です。Macintoshと共に、市場に出てGUIの普及に大きく貢献しました。

Xcode

Xcodeはソフトウェア開発のための、Appleの統合開発環境です。Mac OSXに付随するかたちで配布されています。

Unity

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

0グッド

0クリップ

投稿2021/10/23 04:54

Unityでキャラクターを自動で動かす処理を作ろうと、次のようなプログラムを作りました。

///一部抜粋 [SerializeField]private Rigidbody2D rb2d; void Update() { rb2d.velocity = new Vector2(-1.0f, rb2d.velocity.y); }

しかし、MacOSで動かす処理とiOSで動かす処理とで、速度が変わってしまいました。どのようなプログラムを組めば、端末によって速度が変わらないようになるのでしょうか。教えていただけると助かります。
また、Unity初心者なので、何か勘違いしているところがあれば、ご指摘お願いします。
###環境
Unity 2021.1.25f
Xcode12
###試したこと

///一部抜粋 [SerializeField]private Rigidbody2D rb2d; void Update() { rb2d.velocity = new Vector2(-1.0f * Time.deltaTime, rb2d.velocity.y); }

-1.0fにTime.deltaTimeをかけましたが、今度はキャラクターが動かなくなってしまいました。

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

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

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

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

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

guest

回答1

0

ベストアンサー

-1.0fにTime.deltaTimeをかけましたが、今度はキャラクターが動かなくなってしまいました。

恐らく正常に動作していると思われます。
Time.deltaTimeが非常に値がい小さいため、動いていないように見えるだけだと思います。
例えば以下のようにすればどうでしょうか。

rb2d.velocity = new Vector2(-50.0f * Time.deltaTime, rb2d.velocity.y);//かける数値を-50として変化を見やすくする

ただし、rigidbodyを使用するなら、velocityによる操作ではなくAddForceを用いる方が自然ですし推奨されています。

投稿2021/10/23 07:05

編集2021/10/23 07:11
YOshim

総合スコア1085

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

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

akisan55

2021/10/23 11:47

有難うございます。キャラクターは無事動きましたが、iOSで実機テストをすると、Time.deltaTimeの値が大きくなってしまったのか、より速度が速くなってしまいました。どのようにしたらMacでもiOSでも等速になるでしょうか。 何度もすみませんが、回答頂けたら助かります。
YOshim

2021/10/23 11:57

VelocityではなくAddForceを使うのが良いと思います。 もしくは下記のようにpositionをTime.deltaTimeで加算or減算してもよいです。 ``` void Update(){ transform.position += new Vector3(-50f*Time.deltaTime,0,0); } ```
YOshim

2021/10/23 12:29

ちなみに冒頭に記載のコード"rb2d.velocity = new Vector2(-1.0f, rb2d.velocity.y);" でMacOSとiOSで差が出る理由がよくわかっていません。 もともとvelocityはオブジェクトの速度を規定するものなので、Time.deltaTimeで補正する必要はないはずです。 コード以外に原因がある可能性を考慮してもよいかと思います。
akisan55

2021/10/24 04:24 編集

すみません。勘違いをしていました。 AddForceやtransform.positionを使うと無事正常に動作しました。 助かりました。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.46%

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

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

質問する

関連した質問