実現したいこと
Unity2017.1.0で一人称視点のゲームを作っている者です
C#でしているのですが、
rigidbody.AddForce(transform.forward * speed)
↑の方法で移動して、空を飛ばないようにしたいのですが、どのように書き換えればいいのかわからず困っているので質問させていただきました
方法と詳しい説明をしていただけたら幸いです
発生している問題・エラーメッセージ
上を向いて正面(下のソースではWを押したとき)に移動したら空を飛べてしまい、ステージの壁を越えれてしまう
該当のソースコード
C#
1float speed; //移動速度 2float maxspeed; //最大移動速度 3Rigidbody rb; //自分のrigidbody 4//プレイヤーの移動 5 //前 6 if (Input.GetKey(KeyCode.W) && script.onground == true) 7 { 8 rb.AddForce(transform.forward * speed, ForceMode.Impulse); 9 } 10 //左 11 if (Input.GetKey(KeyCode.A) && script.onground == true) 12 { 13 rb.AddForce(transform.right * -speed, ForceMode.Impulse); 14 } 15 //右 16 if (Input.GetKey(KeyCode.D) && script.onground == true) 17 { 18 rb.AddForce(transform.right * speed, ForceMode.Impulse); 19 } 20 //後ろ 21 if (Input.GetKey(KeyCode.S) && script.onground == true) 22 { 23 rb.AddForce(transform.forward * -speed, ForceMode.Impulse); 24 } 25 //ジャンプ 26 if (Input.GetKeyDown(KeyCode.Space) && script.onground == true) 27 { 28 rb.velocity = new Vector3(rb.velocity.x, janp, rb.velocity.z); 29 } 30 //プレイヤーの最大移動速度の設定 31 if (rb.velocity.z >= maxspeed) 32 { 33 rb.velocity = new Vector3(rb.velocity.x, rb.velocity.y, maxspeed); 34 } 35 if (rb.velocity.z <= -maxspeed) 36 { 37 rb.velocity = new Vector3(rb.velocity.x, rb.velocity.y, -maxspeed); 38 } 39 if (rb.velocity.x >= maxspeed) 40 { 41 rb.velocity = new Vector3(maxspeed, rb.velocity.y, rb.velocity.z); 42 } 43 if (rb.velocity.x <= -maxspeed) 44 { 45 rb.velocity = new Vector3(-maxspeed, rb.velocity.y, rb.velocity.z); 46 }
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2020/03/09 07:35