前提・実現したいこと
慣性を無くした状態でジャンプ中物体を自由に横方向に空中移動できるようにしたいです。
発生している問題・エラーメッセージ
ジャンプ中に横移動をするとジャンプによる上昇が途中でキャンセルされてしまいます。
該当のソースコード
public class charakey : MonoBehaviour { Rigidbody2D rigidbody2D; float jumpforce = 1000.0f; float walkspeed = 80.0f; float maxWalkspeed = 10.0f; // Start is called before the first frame update void Start() { this.rigidbody2D = GetComponent<Rigidbody2D>(); float yoko = this.rigidbody2D.velocity.x; float tenkan = this.rigidbody2D.angularVelocity; } // Update is called once per frame void Update() { // ジャンプ if (Input.GetKeyDown(KeyCode.Space)&&this.rigidbody2D.velocity.y==0){ this.rigidbody2D.AddForce(transform.up *this.jumpforce); } //左右移動 int key = 0; if (Input.GetKeyDown(KeyCode.RightArrow)) { Vector2 yoko = Vector2.zero; rigidbody2D.angularVelocity = 0f; }else if (Input.GetKeyDown(KeyCode.LeftArrow)) { Vector2 yoko = Vector2.zero; rigidbody2D.angularVelocity = 0f; } if (Input.GetKey(KeyCode.RightArrow)) key = 1; else if (Input.GetKey(KeyCode.LeftArrow)) key = -1; float speedx = Mathf.Abs(this.rigidbody2D.velocity.x); //スピードに制限をかける if (speedx < this.maxWalkspeed) { this.rigidbody2D.AddForce(transform.right * key * this.walkspeed); } if (transform.position.y < -7) { SceneManager.LoadScene("SampleScene"); } } void Stop() { //this.rigidbody2D.velocity = Vector2.zero; // rigidbody2D.angularVelocity = 0f; } }
試したこと
Stop()を呼び出す方法を止め、特定のキー(左右移動)を押した時のみvelocityを0にしたのですが、ジャンプしながら横移動をすると慣性が発生してしまい床に着地するまで反対方向に物体を移動させることができなくなりました。
補足情報(FW/ツールのバージョンなど)
バージョンは2019.2.9f1です。
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2020/07/05 03:43