🎄teratailクリスマスプレゼントキャンペーン2024🎄』開催中!

\teratail特別グッズやAmazonギフトカード最大2,000円分が当たる!/

詳細はこちら
C#

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

Unity

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

Q&A

解決済

2回答

2037閲覧

回転数を数えたいのですがどうしたらいいですか?

OKAMOTU

総合スコア10

C#

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

Unity

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

0グッド

0クリップ

投稿2019/09/19 04:53

前提・実現したいこと

風車の回転数を数えたいのですがどうしたらいいかわかりません。
今は、クリックして回転数を数えています。自動的に数えることはできますか?

該当のソースコード

using System.Collections; using System.Collections.Generic; using UnityEngine; public class Windmill : MonoBehaviour { float rotSpeed = 0; int count = 0; // Use this for initialization void Start() { } // Update is called once per frame void Update() { if (Input.GetMouseButtonDown(0)) { count++; Debug.Log(count); this.rotSpeed = 1; } transform.Rotate(new Vector3(0, 0, 0.5f)); } }

試したこと

クリックで数えるようにしました。

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

Unity(2017.1.1f1)
C#

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

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

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

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

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

guest

回答2

0

私も先日似たような仕組みで悩んでいて質問していたので、そちらの質問が参考になるかもしれません。
回転している角度をとっていき、それが360度を超えたら一回転したと判断するという仕組みです。

オブジェクトが1回転したことを検知する方法
https://teratail.com/questions/212489

投稿2019/09/19 06:39

hogefugapiyo

総合スコア3302

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

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

0

ベストアンサー

transform.localEulerAngles.z」という関数で、現在のオブジェクトのZ角度が取得できます。
クリック後に無限に回転し続けるのなら、
Updete関数内で、オブジェクトの角度を取得して「ちょうど0付近になった時」
にカウンタを加算してはどうでしょうか?
いかに、監視するコードの例を記入します。

C#

1 // オブジェクトの角度取得 ※361度とかに対応するため360で割る 2 float f_KakudoNow = this.transform.localEulerAngles.z % 360; 3 // Update一回で回転させる角度によって範囲を調整 4 float f_min = rotSpeed * -0.5f; 5 float f_max = rotSpeed * 0.5f; 6 if (f_min <= f_KakudoNow && f_KakudoNow< 0) 7 { 8 // ここでカウンタ加算 9 } 10

投稿2019/09/19 05:27

Youbun

総合スコア125

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

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

YAmaGNZ

2019/09/19 05:44

丁度0にならない可能性がありそうです。 時計回りなら「今回の角度-前回の角度<0」 反時計回りなら「今回の角度-前回の角度>0」 みたいな感じで判断した方がいいのではないでしょうか?
Youbun

2019/09/19 05:46

上記回答の 「 if (f_min <= f_KakudoNow && f_KakudoNow< 0) 」 のぶぶんがそれですね! 1回のUpdeteで回転させる範囲だけ判定する というイメージです。
YAmaGNZ

2019/09/19 06:05

すみません。読んでませんでした。
OKAMOTU

2019/09/20 03:37

ご回答ありがとうございます!!! 無事に実行することができました。 また、一つ勉強になりました。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.36%

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

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

質問する

関連した質問