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

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

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

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

Unity3D

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

Q&A

解決済

1回答

2295閲覧

Unity3Dのジャンプの挙動、重力を自然に行いたい

light_owen

総合スコア0

C#

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

Unity3D

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

0グッド

0クリップ

投稿2021/02/23 12:42

前提・実現したいこと

重力を自然に行いたい
ジャンプさせたい

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

前後左右には普通に移動できるが上下きちんとに力が働いていない
落ちるスピードがかなりゆっくりになっている

エラーは出ていません

該当のソースコード

C#

1using System.Collections; 2using System.Collections.Generic; 3using UnityEngine; 4 5 6public class PlayerMove : MonoBehaviour 7{ 8 float movespeed=10.0f; 9 10 Rigidbody rb; 11 GameObject playercamera; 12 13 private void Start() 14 { 15 playercamera = this.transform.Find("PlayerCamera").gameObject; 16 rb = GetComponent<Rigidbody>(); 17 } 18 19 private void FixedUpdate() 20 { 21 Walk(); 22 Jump(); 23 } 24 25 void Walk() 26 { 27 var hori = Input.GetAxis("Horizontal"); 28 var vert = Input.GetAxis("Vertical"); 29 30 Vector3 movevactor= Vector3.zero; 31 32 Vector3 forward = playercamera.transform.forward; 33 Vector3 right = playercamera.transform.right; 34 35 movevactor = movespeed * (forward.normalized * vert + right.normalized * hori); 36 37 rb.AddForce(100*(movevactor - rb.velocity)); 38 } 39 40 void Jump() 41 { 42 if (Input.GetAxis("Jump") != 0) 43 { 44 rb.AddForce(new Vector3(0, 5, 0), ForceMode.Impulse); 45 } 46 } 47}

試したこと

ジャンプする為の力を変えても解決しなかったりそもそも上に上がりませんでした
重力を変えると落ちる速度は変わりますがその速度自体は一定です
Walk()の部分をコメント化して実行すると改善されました

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

Unity 2019.4.12f1 Personal
Microsft Visual Stadio

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

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

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

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

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

guest

回答1

0

自己解決

Walk()内のrb.AddForce(100*(movevactor - rb.velocity));をrb.AddForce(100 * new Vector3(moveVactor.x - rb.velocity.x, 0, moveVactor.z - rb.velocity.z));とすることでy方向の力が自然に働くようになりました。

投稿2021/02/24 12:09

light_owen

総合スコア0

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.35%

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

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

質問する

関連した質問