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

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

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

Unityは、ユニティテクノロジーが開発したゲームエンジンです。 主にモバイルやブラウザ向けのゲーム製作に利用されていましたが、3Dの重力付きゲームが簡単に作成できることから需要が増え、現在はマルチプラットフォームに対応しています。 言語はC言語/C++で書かれていますが、C#、JavaScript、Booで書かれたコードにも対応しています。

解決済

物理演算を考慮しつつ、向いている方向に転がして移動させたい

YYYY
YYYY

総合スコア1

Unity

Unityは、ユニティテクノロジーが開発したゲームエンジンです。 主にモバイルやブラウザ向けのゲーム製作に利用されていましたが、3Dの重力付きゲームが簡単に作成できることから需要が増え、現在はマルチプラットフォームに対応しています。 言語はC言語/C++で書かれていますが、C#、JavaScript、Booで書かれたコードにも対応しています。

1回答

0リアクション

0クリップ

270閲覧

投稿2022/09/25 13:56

概要

ボールを、上下キーで前進/後退、左右キーで方向転換を行う動作を目的として、以下のコードを作成したところ、同じ場所を行ったり来たりするのみでうまく進まず、方向転換もボールが回転していると、それ自身の傾きを考慮してしまい、y軸でうまく回りません。

ソースコード

c#

using System.Collections; using System.Collections.Generic; using UnityEngine; public class PlayerController : MonoBehaviour { public float speed; public float angleSpeed; private Rigidbody rb; // Start is called before the first frame update void Start() { rb = GetComponent<Rigidbody>(); } void FixedUpdate() { //キー入力を取得 var moveHorizontal = Input.GetAxis("Horizontal"); var moveVertical = Input.GetAxis("Vertical"); //上下入力は進行、後退を行う rb.AddForce(transform.forward * moveVertical * speed * Time.deltaTime, ForceMode.Force); //左右入力は方向転換を行う transform.Rotate(0, angleSpeed * moveHorizontal * Time.deltaTime, 0); } }

以下のような質問にはリアクションをつけましょう

  • 質問内容が明確
  • 自分も答えを知りたい
  • 質問者以外のユーザにも役立つ

リアクションが多い質問は、TOPページの「注目」タブのフィードに表示されやすくなります。

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

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

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

下記のような質問は推奨されていません。

  • 間違っている
  • 質問になっていない投稿
  • スパムや攻撃的な表現を用いた投稿

適切な質問に修正を依頼しましょう。

pm_tera

2022/09/25 17:24

正確な回答ではないので、こちらへのコメントで失礼します。 >上下入力は進行、後退を行う 球体が回転しているためtransform.forwardの向きが変わってしまうことが行ったり来たりの原因です。 たとえば、該当箇所をCamera.main.transform.forwardとすると、カメラの奥行方向に進んだり、戻ったりできます。 >左右入力は方向転換を行う おそらく、やりたいことはtransform.RotateAroundではないかと想像します。 ただ、方向転換後には前進/後退の向きはどうなるのでしょうか? 90度方向転換したら、上下キーで左右に進むようになるのでしょうか? そのあたりの仕様を記述すると、より正確な回答を得られると思います。 余談ですが、十字キーで前進/後退するゲームの多くは、左右キーではカメラの位置と向きを変えているだけな気がします……

まだ回答がついていません

会員登録して回答してみよう

アカウントをお持ちの方は

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

ただいまの回答率
86.12%

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

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

質問する

関連した質問

同じタグがついた質問を見る

Unity

Unityは、ユニティテクノロジーが開発したゲームエンジンです。 主にモバイルやブラウザ向けのゲーム製作に利用されていましたが、3Dの重力付きゲームが簡単に作成できることから需要が増え、現在はマルチプラットフォームに対応しています。 言語はC言語/C++で書かれていますが、C#、JavaScript、Booで書かれたコードにも対応しています。