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

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

新規登録して質問してみよう
ただいま回答率
85.37%
Microsoft HoloLens

Microsoft HoloLensは、マイクロソフト社が開発しているヘッドマウントディスプレイ方式のコンピュータです。拡張現実体験のため透明なレンズを備えています。

C#

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

Unity3D

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

Q&A

解決済

1回答

4226閲覧

Unityでの角度の差分取得

Antlia

総合スコア2

Microsoft HoloLens

Microsoft HoloLensは、マイクロソフト社が開発しているヘッドマウントディスプレイ方式のコンピュータです。拡張現実体験のため透明なレンズを備えています。

C#

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

Unity3D

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

0グッド

0クリップ

投稿2021/07/13 11:00

前提・実現したいこと

Unityを使ってHoloLens2のアプリケーション開発を行っています。
現在画面上に3Dオブジェクトを表示していて手で掴んで操作することができます。
そこでフレーム毎にy軸周りの回転量(y軸の角度差)を計算し、それを基に他の機能を追加したいと考えています。
いろいろ検索してみましたが解決策が見当たらなかったため質問として投稿させていただきます。
また、下記の変数differenceを他のスクリプトで使用する方法についてもご教授していただけると幸いです。

発生している問題・エラーメッセージ

エラーは特に起きていませんがうまくいっているのかどうか自分では判断ができていない状況です。 下記のold_angleに現在の角度を格納し、differenceで差分を検出しようという目論見ですが、Debug.Logで確認するとずっと0が出力されます。 old_angleの出力はオブジェクトの現在角になっています。 differenceの出力が正しく計算されていないこと(old_angle = difference)が原因なのかそれとも計算はきちんと行われているが変化が目視できていないのかがわかっていません。

該当のソースコード

角度を扱う部分 using System.Collections; using System.Collections.Generic; using UnityEngine; using System; public class CyrinderRotation : MonoBehaviour { float old_angle = 0; float difference = 0; public string GetServoAngle() { var rb = GetComponent<Rigidbody>(); //gameObject.transform.localEulerAngles;//オブジェクトの回転座標取得 //return $"{ConvertPitch(transform.localEulerAngles.x)},{ConvertYaw(transform.localEulerAngles.y)}"; //transform.rigidbody.constraints = RigidbodyConstraints.FreezePosition; //rigidbody.constraints = RigidbodyConstraints.FreezeRotationX; //rigidbody.constraints = RigidbodyConstraints.FreezeRotationZ; old_angle = transform.localEulerAngles.y; difference = transform.localEulerAngles.y - old_angle; Debug.Log(old_angle);     Debug.Log(difference); return $"{transform.localEulerAngles.y}"; } void start() { } public void Update() { } }

試したこと

ここに問題に対して試したことを記載してください。

補足情報(FW/ツールのバージョンなど)

Unity2019.4.15f1
HoloLens2

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

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

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

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

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

ku__ra__ge

2021/07/13 11:38

現在の角度と何の差分を検出しようという目論見なのですか? 提示されたコードは「現在の角度と、現在の角度の差分」を検出するコードになっており、ずっと0が出力されるのは正常です。 現在の角度と比較したい内容との差分が出せるようプログラムを修整してみてください。
Antlia

2021/07/13 12:16

ku__ra__geさん ありがとうございます。 検出したいのは現在の角度と直前の角度です。 この二つの差分を取得したいと考えています。
guest

回答1

0

ベストアンサー

difference = transform.localEulerAngles.y - old_angle;
old_angle = transform.localEulerAngles.y;

多分こうですね。(行の順番が逆)

投稿2021/07/14 01:46

sakura_hana

総合スコア11427

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

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

Antlia

2021/07/15 04:14

返信遅れてすみません指摘のとおりに修正すると無事に差分を取得することができました。 ありがとうございます。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.37%

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

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

質問する

関連した質問