提示コード////コメント部のコード 台の上から落ちる時や坂道を下るときにかかる重力などを設定したいのですが以下の色んなやり方を試しましたが何かしらのバグが発生するので実装できません。いろいろやり方はあると思うのですがどすればいいのでしょうか?
1、use gravityを使って常にY軸をマイナス方向に力を掛ける。やり方、小さい数字から大きい数字まで試しましたがガタガタ画面が揺れてしまい上手く実装できません。※AddForceを使ってY軸は0にしました。
2、rb.AddForceを使ってY軸に-20設定しましたがこんどは坂道を下がるときに空中に浮いてから下がり始めるため上手く実装できません。
3,velocityを使ってみましたがY軸に-20くらいの設定しましたが同じ動かせなくなり坂道で画面がガタガタしたり挙動がおかしくないります。
結論として上手く実装する方法がわかりません。どうしたらいいのでしょうか? つまり地面にくっついて移動して落ちる時は落下したいという処理なのですがどの方法を使っても上手く実装できません。
坂を下る時の処理で空中に浮いたり、浮きはしないがガタガタしたり、なんやかんだで目的の処理が実現できないので重力どうこうまず、やり方自体を変えないといけないと思いましてこの参考サイトを見たのですが下る時はこのようなやり方で実装するのでしょうか? 提示コードにはありませんがこのような処理を入れたのですが上手く坂道を下ってくれず空中に浮くというバグが発生していまいます。
参考サイト:https://gametukurikata.com/program/rigidbodyandcollider
using System.Collections; using System.Collections.Generic; using UnityEngine; public class Controller : MonoBehaviour { private float input_h; private float input_v; private Vector3 move; private Rigidbody rb; private float walk_speed;//移動速度 private Animator ani;//移動速度 private Vector3 gravity; private bool isJump = false;//ジャンプしてるかどうかを管理する private Vector3 v; private bool isDush; GameObject Ground; GameObject Slope; // Use this for initialization void Start() { Ground = GameObject.Find("GroundCheck"); Slope = GameObject.Find("SlopeCheck"); walk_speed = 5.0f; gravity = Vector3.zero; rb = GetComponent<Rigidbody>(); ani = GetComponent<Animator>(); } void Gravity_Mng()//ジャンプ管理 { } void Move_Mng() { input_h = Input.GetAxis("Horizontal"); input_v = Input.GetAxis("Vertical"); Vector3 move_z = new Vector3(); Vector3 move_x = new Vector3(); move_z = Vector3.Scale(Camera.main.transform.forward, new Vector3(1, 0, 1)).normalized * input_v ;//* walk_speed; move_x = Camera.main.transform.right * input_h; //* walk_speed; move = move_x + move_z; if (move != Vector3.zero) { transform.rotation = Quaternion.LookRotation(move.normalized); } } // Update is called once per frame void Update() { Gravity_Mng(); Move_Mng(); move.x *= 200; move.z *= 200; } ////////////////////////////////////////////////////////////////////////////////////////////// void FixedUpdate() { // rb.velocity = new Vector3(move.x, 0, move.z); rb.AddForce(move.x, -50, move.z); Debug.Log("velocity: " + rb.velocity); } ////////////////////////////////////////////////////////////////////////////////////////////// }
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
退会済みユーザー
2020/02/15 07:29
2020/11/06 08:28 編集