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

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

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

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

Unity

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

Arduino

Arduinoは、AVRマイコン、単純なI/O(入出力)ポートを備えた基板、C言語を元としたArduinoのプログラム言語と、それを実装した統合開発環境から構成されたシステムです。

Q&A

1回答

2347閲覧

Unity:キーを押すと指定角度まで回転したのち一気に指定角度まで戻る

onmmn

総合スコア13

C#

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

Unity

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

Arduino

Arduinoは、AVRマイコン、単純なI/O(入出力)ポートを備えた基板、C言語を元としたArduinoのプログラム言語と、それを実装した統合開発環境から構成されたシステムです。

0グッド

0クリップ

投稿2018/12/02 04:47

前提・実現したいこと

UnityとArduinoを連携させ、ゲームを製作しています。
ゲーム内で「Q」キーを押すと、Arduinoと繋げたサーボモータが指定角度まで回転したのち、指定角度まで戻る、という処理を実装しようと思っています。
(例:角度上限255において、255まで回転したのち90まで一気に戻る)

発生している問題

現在、「Q」キーを押すと255まで回転、「W」キーを押すと90まで回転させるコードは書くことができました。
しかし実装したいのは、「Q」を押すと「255まで行って90まで戻る」という一連の処理で、これをどのように書けば良いのか分かりません。

該当のソースコード

「Uduino」を使ってArduinoとUnityを連携させています。

using UnityEngine; using System.Collections; using Uduino; public class testoo : MonoBehaviour { [Range(0,255)] public int servoValue; void Start () { UduinoManager.Instance.pinMode (9, PinMode.Servo); } void Update () { if (Input.GetKey (KeyCode.Q)) { UduinoManager.Instance.analogWrite (9, 255); } else if (Input.GetKey (KeyCode.W)) { UduinoManager.Instance.analogWrite (9, 0); } } }

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

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

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

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

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

izmktr

2018/12/05 18:03

素朴な疑問ですが、analogWrite (9, 255)で255度になるのはわかるんだけど、90度にするのにanalogWrite (9, 0)ってどういうことなんでしょう?
guest

回答1

0

C#

1public class testoo : MonoBehaviour { 2 3 [Range(0,255)] 4 public int servoValue; 5 6 void Start () { 7 UduinoManager.Instance.pinMode (9, PinMode.Servo); 8 } 9 10 void Update () { 11 if (Input.GetKeyDown (KeyCode.Q)) { 12 StartCoroutine(MoveQ()); 13 } else if (Input.GetKey (KeyCode.W)) { 14 UduinoManager.Instance.analogWrite (9, 0); 15 16 } 17 } 18 IEnumerator MoveQ() 19 { 20 UduinoManager.Instance.analogWrite (9, 255); 21 yield return new WaitForSeconds(0.5f); 22 UduinoManager.Instance.analogWrite (9, 90); 23 } 24 25} 26

少し雑ですが試してみてください
もう少し丁寧に実装するのなら
サンプルのようにサーボの角度を0から255まで順次に上げていった方が誤動作が少なくなると思います

投稿2018/12/22 04:12

bochan2

総合スコア2050

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

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

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

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問