質問編集履歴

3

コードの変更

2020/01/03 03:54

投稿

mitatoshi
mitatoshi

スコア12

test CHANGED
File without changes
test CHANGED
@@ -178,13 +178,7 @@
178
178
 
179
179
  }
180
180
 
181
- void SetCountText()
181
+
182
-
183
- {
184
-
185
- scoreText.text = "Score : " + score.ToString();
186
-
187
- }
188
182
 
189
183
  void setcountText()
190
184
 

2

コードを変えました

2020/01/03 03:54

投稿

mitatoshi
mitatoshi

スコア12

test CHANGED
File without changes
test CHANGED
@@ -120,7 +120,7 @@
120
120
 
121
121
  {
122
122
 
123
- temperature = peak;
123
+ temperature = threshold;
124
124
 
125
125
  peak += 20;
126
126
 
@@ -128,7 +128,7 @@
128
128
 
129
129
 
130
130
 
131
- if ((temperature > peak)&&(start == 2))  //閾値を超えた時の処理
131
+ if ((temperature > threshold)&&(start == 2))  //閾値を超えた時の処理
132
132
 
133
133
  {
134
134
 
@@ -160,4 +160,40 @@
160
160
 
161
161
  }
162
162
 
163
+
164
+
165
+ private void OnTriggerEnter(Collider other)
166
+
167
+ {
168
+
169
+ if (other.gameObject.CompareTag("start"))
170
+
171
+ {
172
+
173
+ start += 1;
174
+
175
+ setcountText();
176
+
177
+ }
178
+
179
+ }
180
+
181
+ void SetCountText()
182
+
183
+ {
184
+
185
+ scoreText.text = "Score : " + score.ToString();
186
+
187
+ }
188
+
189
+ void setcountText()
190
+
191
+ {
192
+
193
+ startText.text = "start : " + start.ToString();
194
+
195
+ }
196
+
197
+ }
198
+
163
199
  ```

1

前回は具体的に閾値などについて理解しておらず意味不明の質問をしていた

2020/01/03 03:47

投稿

mitatoshi
mitatoshi

スコア12

test CHANGED
File without changes
test CHANGED
@@ -1,6 +1,6 @@
1
1
  ### 行いたい事
2
2
 
3
- 温度センサーを用いて温度を測定しており、Arduinoとunityをシリアル通信させています。そこで、Arduinoで処理したデータの下記画像の丸部分unity側にて閾値とする時どのようにすればいいか分からないです。
3
+ 温度センサーを用いて温度を測定しており、Arduinoとunityをシリアル通信させています。そこで、Arduinoで処理したデータを閾値とする時どのようにすればいいか分からないです。
4
4
 
5
5
  ### 現在行えている事
6
6
 
@@ -8,13 +8,13 @@
8
8
 
9
9
  ### お聞きしたい事
10
10
 
11
- unity側にて周期ごとのピを閾値と処理の方法を教えていただきたいです。※Arduino側にて周期ごとのピークをunity側に送りたいのとは違います。
11
+ unity側にてArduinoから得たデを閾値として用いる方法を教えてきたいです。
12
+
13
+ ### コードの説明
14
+
15
+ 閾値を0としておきstartを通過したときのArduinoからの出力を閾値としたいです。startのすぐ後にもう1つstartを用意して(ユーザの視点からはみえないようにする)startを通った時の値を閾値としたいです。実際に実行してみたところ、start1とstart2を入力の値が400ぐらいで通り抜けたので値を470ぐらいまであげたのにも関わらず閾値を超えた時の処理が行われなかったので悩んでおります。
12
16
 
13
17
 
14
-
15
- ###検出したい箇所の参考画像
16
-
17
- ![イメージ説明](aa9054f29300980f7bb377ab9e7428a5.jpeg)
18
18
 
19
19
  ###unity側でのコード
20
20
 
@@ -34,15 +34,21 @@
34
34
 
35
35
 
36
36
 
37
- public float threshold = 350f; //閾値
37
+ public float threshold = 0f; //閾値
38
38
 
39
39
 
40
40
 
41
- public Vector3 velocity = new Vector3(0f, 0f, 0.6f);
41
+ public Vector3 velocity = new Vector3(0f, 0f, 1.0f);
42
42
 
43
+ public Text sensorText;
43
44
 
45
+ public Text startText;
44
46
 
47
+ private bool levelDown = false;
45
48
 
49
+ private int start;
50
+
51
+ public static float starT { get; internal set; }
46
52
 
47
53
 
48
54
 
@@ -55,6 +61,10 @@
55
61
 
56
62
 
57
63
  serialHandler.OnDataReceived += OnDataReceived;
64
+
65
+ start = 0;
66
+
67
+ setcountText();
58
68
 
59
69
 
60
70
 
@@ -88,6 +98,8 @@
88
98
 
89
99
  if (data.Length < 2) return;
90
100
 
101
+ sensorText.text = "ondo:" + message;
102
+
91
103
 
92
104
 
93
105
 
@@ -100,52 +112,52 @@
100
112
 
101
113
  {
102
114
 
103
-
104
-
105
115
  var temperature = float.Parse(data[0]);
106
116
 
107
117
 
108
118
 
109
- if (temperature > threshold)
119
+ if(start == 1)         //入力した値を閾値としたい
110
-
111
-
112
120
 
113
121
  {
114
122
 
123
+ temperature = peak;
115
124
 
116
-
117
- transform.localPosition += velocity * Time.deltaTime;
125
+ peak += 20;
118
-
119
-
120
126
 
121
127
  }
122
128
 
123
129
 
124
130
 
131
+ if ((temperature > peak)&&(start == 2))  //閾値を超えた時の処理
132
+
133
+ {
134
+
135
+ transform.localPosition += (levelDown) ? new Vector3(0.0f, 10.0f, 0.0f) * Time.deltaTime : velocity * Time.deltaTime;
136
+
137
+ levelDown = false;
138
+
139
+ }
140
+
141
+ else
142
+
143
+ {
144
+
145
+ transform.localPosition += velocity * Time.deltaTime;
146
+
147
+ levelDown = true;
148
+
149
+ }
150
+
125
151
  }
126
-
127
-
128
152
 
129
153
  catch (System.Exception e)
130
154
 
131
-
132
-
133
155
  {
134
-
135
-
136
156
 
137
157
  Debug.LogWarning(e.Message);
138
158
 
139
-
140
-
141
159
  }
142
-
143
-
144
160
 
145
161
  }
146
162
 
147
-
148
-
149
- }
150
-
151
163
  ```