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

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

新規登録して質問してみよう
ただいま回答率
85.48%
C#

C#はマルチパラダイムプログラミング言語の1つで、命令形・宣言型・関数型・ジェネリック型・コンポーネント指向・オブジェクティブ指向のプログラミング開発すべてに対応しています。

Unity3D

Unity3Dは、ゲームや対話式の3Dアプリケーション、トレーニングシュミレーション、そして医学的・建築学的な技術を可視化する、商業用の開発プラットフォームです。

Unity

Unityは、Unity Technologiesが開発・販売している、IDEを内蔵するゲームエンジンです。主にC#を用いたプログラミングでコンテンツの開発が可能です。

Q&A

1回答

600閲覧

画面を回転させる際、回転スピードが速すぎるので遅くしたいです。あとFixedJoyStickを使ってる最中は画面を回転させたくないのですがうまくいきません。

Abc_.c

総合スコア18

C#

C#はマルチパラダイムプログラミング言語の1つで、命令形・宣言型・関数型・ジェネリック型・コンポーネント指向・オブジェクティブ指向のプログラミング開発すべてに対応しています。

Unity3D

Unity3Dは、ゲームや対話式の3Dアプリケーション、トレーニングシュミレーション、そして医学的・建築学的な技術を可視化する、商業用の開発プラットフォームです。

Unity

Unityは、Unity Technologiesが開発・販売している、IDEを内蔵するゲームエンジンです。主にC#を用いたプログラミングでコンテンツの開発が可能です。

0グッド

0クリップ

投稿2022/06/03 01:35

編集2022/06/03 01:38

質問はプレイヤーをFixedJoyStickを使ってマウスドラッグで移動させてます。ただマウスでドラッグして画面の回転もさせたいためプログラムを使いカメラオブジェクトにアタッチしたのですが、画面の回転スピードが速すぎるため遅くしたいです。回転スピードをInspectorから設定できる欄はあるのですが設定しても回転スピードの数値を0.01とかにしても速すぎるためもっと遅くする方法を知りたいです。あとFixedJoyStickを使って移動している最中は画面回転を停止させたいですがそれもうまくいきません。
以下は画面を回転させるコードになります。どなたかわかる方いましたら教えてください。

public

1 public Vector2 rotationSpeed; 2 public bool reverse; 3 4 private Camera mainCamera; 5 private Vector2 lastMousePosition; 6 void Start() 7 { 8 mainCamera = Camera.main; 9 } 10 11 void Update() 12 { 13 if (Input.GetMouseButtonDown(0)) 14 { 15 lastMousePosition = Input.mousePosition; 16 } 17 else if (Input.GetMouseButton(0)) 18 { 19 if (!reverse) 20 { 21 var x = (lastMousePosition.x - Input.mousePosition.x); 22 var y = (Input.mousePosition.y - lastMousePosition.y); 23 24 if (Mathf.Abs(x) < Mathf.Abs(y)) 25 x = 0; 26 else 27 y = 0; 28 29 var newAngle = Vector3.zero; 30 newAngle.x = x * rotationSpeed.x; 31 newAngle.y = y * rotationSpeed.y; 32 33 mainCamera.transform.RotateAround(playerObject.transform.position, Vector3.up, newAngle.x); 34 mainCamera.transform.RotateAround(playerObject.transform.position, transform.right, newAngle.y); 35 lastMousePosition = Input.mousePosition; 36 } 37 else 38 { 39 var x = (Input.mousePosition.x - lastMousePosition.x); 40 var y = (lastMousePosition.y - Input.mousePosition.y); 41 42 if (Mathf.Abs(x) < Mathf.Abs(y)) 43 x = 0; 44 else 45 y = 0; 46 47 var newAngle = Vector3.zero; 48 newAngle.x = x * rotationSpeed.x; 49 newAngle.y = y * rotationSpeed.y; 50 51 mainCamera.transform.RotateAround(playerObject.transform.position, Vector3.up, newAngle.x); 52 mainCamera.transform.RotateAround(playerObject.transform.position, transform.right, newAngle.y); 53 lastMousePosition = Input.mousePosition; 54 } 55 } 56 }

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

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

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

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

>画面の回転スピードが速すぎるため遅くしたいです。
FPSを固定していない環境で毎フレーム何かの座標を動かしたいときは係数にtime.deltaTimeをかけてください。
今回でいうとrotationSpeedですかね。
結果遅くなりますがこれは遅くするためにかけたのではなく、どんな環境でも一定スピードで動かすためにかけます。
解説は以下あたりで
https://tmls.hatenablog.com/entry/2020/09/23/215515

>あとFixedJoyStickを使って移動している最中は画面回転を停止させたいですがそれもうまくいきません。
まだちょっと仕様が把握できないんですが、プレイヤーの移動後にカメラをプレイヤーの向いてる方向へ滑らかに移動&回転させたいみたいなイメージですかね?

投稿2022/06/03 02:44

編集2022/06/03 02:50
UnchFullburst

総合スコア663

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

Abc_.c

2022/06/03 04:37

ご回答ありがとうございます。 FixedjoyStickの仕様についてはそのイメージです。 ちなみにFixedjoyStickのコードもここに載せたかったのですが、バグなのか知りませんが、スクリプトの中身が見れない(表示されない)ため無理でした。
Abc_.c

2022/06/03 04:38

time.deltaTimeの件試してみます!
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

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

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

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問