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

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

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

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

Q&A

解決済

2回答

1302閲覧

3Dゲームの落下の実装についてmesh collider

退会済みユーザー

退会済みユーザー

総合スコア0

Unity3D

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

0グッド

0クリップ

投稿2019/09/25 03:03

落下の重力を実装したいのですがUpdate内でPhysics.gravity = new Vector3(0,-40.0f,0);などをしてOnCollisionEnter内で提示コード内のようにゼロにすると実行中に上下にガタガタ動いてしまうのでStart内でPhysics.gravity で重力を設定して地面とコリジョンした時にゼロになりまではいいのですがそこが坂を上った場所のだった場合に落下してくれません、これはどうしたいいのでしょうか?

※つまり、Update内でgravityを設定するとことはできないので困っています

using System.Collections; using System.Collections.Generic; using UnityEngine; public class Player : MonoBehaviour { private float input_h; private float input_v; private Vector3 move; private Vector3 jump_move; private Rigidbody rb; private float move_speed = 20.0f; private float gs = -250.0f; private Animator ani; private bool isJump = false; private bool isGround = false; // Use this for initialization void Start () { rb = GetComponent<Rigidbody>(); ani = GetComponent<Animator>(); } void Update_Move() { input_h = Input.GetAxis("Horizontal"); input_v = Input.GetAxis("Vertical"); move = (Camera.main.transform.forward.normalized * input_v) + (Camera.main.transform.right.normalized * input_h); if (move != Vector3.zero) { transform.rotation = Quaternion.LookRotation(move); } move.x = move.x * move_speed; move.z = move.z * move_speed; // Debug.Log(move.y); rb.velocity = move; } void Update_Jump() { if (Input.GetKey(KeyCode.Space)) { } } void Update_Animation() { float Walk_Speed = Mathf.Sqrt((move.x * move.x) + (move.z * move.z));//移動速度を取得 ani.SetFloat("Walk",Walk_Speed); ani.speed = Walk_Speed / 2; if(ani.speed < 1) { ani.speed = 1; } } // Update is called once per frame void Update () { Update_Move(); Update_Jump(); Update_Animation(); Physics.gravity = new Vector3(0, -250, 0); if (isGround == false) { // Physics.gravity = new Vector3(0, -250, 0); } } void FixedUpdate() { if (isJump == false) { } } void OnCollisionEnter() { Debug.Log("Collision"); // Physics.gravity = new Vector3(0, 0, 0); rb.velocity = new Vector3(0,0,0); //isGround = true; // isOnJump = false; // gs = 0; } }

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

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

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

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

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

sakura_hana

2019/09/25 04:37

重力を変えてどうしたいのですか? 単にジャンプ等させたいだけなら普通はPhysics.gravityを操作することは無いと思いますが。 (なお、前の質問でも指摘したようにrb.velocityを書き換えてるので、Y方向の速度が変な値になる=重力がおかしくなると思います)
退会済みユーザー

退会済みユーザー

2019/09/25 05:00

いえ、これはキャラクターの動きですのでわざとrv.vleocityを使っていいますAddForceを使って見たのですがあまり気持ちい動きではなく氷の上を滑ってる感じだったのでやめました。 ジャンプと落下処理を作りたいです。坂道のブロックの上に上がった時に落下することができず困っています
guest

回答2

0

ベストアンサー

Physics.gravity = new Vector3(0,-40.0f,0);

相変わらず重力落下速度早いな...
木星並みの重力だ...

まぁ、それはいいとしまして、
坂の角度が何度なのか分かりません。
60°以上ぐらいじゃないとほぼ乗ってしまったような記憶があります。

坂に乗った後、どのような動きにしたいのか分かりませんが、ラグドールと言われるぐったりと倒れるアニメーションをつけることが出来ます。

こちらを参照してみて下さい。

投稿2019/09/26 00:52

stdio

総合スコア3307

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

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

0

意見の1つですが こちらのサイトを参考にしてみてはいかがでしょうか?
もう試されているようならすみません。
Rigidbodyを使ったキャラクター操作をする方法が書かれてあります。
https://gametukurikata.com/program/rigidbodyandcollider

投稿2019/09/25 13:16

rintarou1234

総合スコア157

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問