落下の重力を実装したいのですが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; } }
重力を変えてどうしたいのですか?
単にジャンプ等させたいだけなら普通はPhysics.gravityを操作することは無いと思いますが。
(なお、前の質問でも指摘したようにrb.velocityを書き換えてるので、Y方向の速度が変な値になる=重力がおかしくなると思います)
いえ、これはキャラクターの動きですのでわざとrv.vleocityを使っていいますAddForceを使って見たのですがあまり気持ちい動きではなく氷の上を滑ってる感じだったのでやめました。
ジャンプと落下処理を作りたいです。坂道のブロックの上に上がった時に落下することができず困っています
回答2件
あなたの回答
tips
プレビュー