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

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

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

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

Unity

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

Q&A

1回答

5304閲覧

ジャンプの挙動について

GOTOken

総合スコア54

C#

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

Unity

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

0グッド

1クリップ

投稿2018/05/14 01:48

イメージ説明

C#

1 if(Input.GetKeyDown(KeyCode.W)) 2 { 3 rb.AddForce(Vector2.up * jumpPower); 4 Debug.Log("Jump"); 5 }

このようにしてジャンプの挙動を作成しているのですが、飛んだときの挙動がtransform.Translateされたような瞬間移動された挙動をします。また、落下速度もとても遅く数値を重くしていたのですがどれも思ったような挙動をしてくれませんでした。
実現したいものが、マリオのような感じです。

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

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

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

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

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

guest

回答1

0

■瞬間移動のようになる
恐らくjumpPowerの値が大きすぎです。調整してみてください。

■マリオのような感じ
あれは現実の物理法則を無視しています。
マリオの完コピvol.28 ジャンプの解析と修正 - ゲムキブログ

Unityは基本的には現実の物理法則に則って演算しようとする為、マリオを再現するとしたら、

  • 重力の値を調整(Unity上部メニュー「Edit→ProjectSettings→Physics→Gravity」の値を変更)
  • スクリプトから既存物理演算に対し加速/減速して調整
  • 物理演算は使わない。Rigidbodyは衝突検知だけに使用し移動系は全て自力実装

などの方法があります。
「希望する動き」がどのようなものかにもよりますので一概には言えませんが、色々試す&調べるといいと思います。

投稿2018/05/14 02:02

sakura_hana

総合スコア11425

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

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

GOTOken

2018/05/15 05:16

基本アクションゲームと同等の挙動をとりたいと考えています。 public float jumpPower; private Rigitbody2D rg; rg.Addforce(Vector.Up * jumpPower); このような書き方がほぼばかりで、理解が深めることが出来ませんでした。
sakura_hana

2018/05/15 05:29

「基本アクションゲーム」なんてものは存在しません。 (アクションゲームは特に)ゲーム毎に動きの味付けがされていることが多い為、Unityやプログラムの仕様を把握した上で自分の好みに合わせてスクリプトを書いたり値を調整する必要があります。 rg.Addforce(Vector.Up * jumpPower); はそのUnityの仕様の内、最も基本的なコードで 「指定のベクトル(今回は「ワールド座標Y軸正方向、長さjumpPower」)分の力を加える」という意味です。 jumpPowerが大きい=加わる力が大きい=勢いよく飛んでいく jumpPowerが小さい=加わる力が小さい=それなりの速度で飛んでいく となりますが、今回は「500」というかなり大きな数字が設定されていたので一瞬で飛んで行ったのではと想像した次第です。 なので「とりあえず値を小さくしてみては?」というアドバイスでした。 「unity Addforce」で調べるだけでも結構色々出て来ると思います。 理解は深めようとしなければ深まりません。
GOTOken

2018/05/15 05:42

jumpPower:200 Gravity Scale:1の状態で実行したところほぼジャンプしてるように見えませんでした。 jumpPowerの数値を上げてみたところ、落下するのがとても遅く、その問題を解消するためにGravity Scaleの数値を上げてみると瞬間移動・・・。これの対処法がわかりません。
sakura_hana

2018/05/15 08:46

検証しましたが、jumpPower:500、GravityScale:1、Gravity:-9.81の状態で普通にジャンプする動きに見えました。 GravityScaleは「重力の倍率」なので、0にすれば落下せずにジャンプした時点ですっ飛んでいくでしょうし、2以上にすれば高速で落下すると思います(元の重力の値によりますが)。 GravityScale:1で非常に遅いということは、別の所のパラメータを変えているものと思われます。(上記のGravityかもしれないしAngularDrag=空気抵抗かもしれない) 一旦全て数値を初期値にして、各パラメータの意味を理解した上で1つずつ調整していった方がいいと思います。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

会員登録して回答してみよう

アカウントをお持ちの方は

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

ただいまの回答率
85.50%

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

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

質問する

関連した質問