質問編集履歴
3
コードの変更
title
CHANGED
File without changes
|
body
CHANGED
@@ -88,10 +88,7 @@
|
|
88
88
|
setcountText();
|
89
89
|
}
|
90
90
|
}
|
91
|
-
|
91
|
+
|
92
|
-
{
|
93
|
-
scoreText.text = "Score : " + score.ToString();
|
94
|
-
}
|
95
92
|
void setcountText()
|
96
93
|
{
|
97
94
|
startText.text = "start : " + start.ToString();
|
2
コードを変えました
title
CHANGED
File without changes
|
body
CHANGED
@@ -59,11 +59,11 @@
|
|
59
59
|
|
60
60
|
if(start == 1) //入力した値を閾値としたい
|
61
61
|
{
|
62
|
-
temperature =
|
62
|
+
temperature = threshold;
|
63
63
|
peak += 20;
|
64
64
|
}
|
65
65
|
|
66
|
-
if ((temperature >
|
66
|
+
if ((temperature > threshold)&&(start == 2)) //閾値を超えた時の処理
|
67
67
|
{
|
68
68
|
transform.localPosition += (levelDown) ? new Vector3(0.0f, 10.0f, 0.0f) * Time.deltaTime : velocity * Time.deltaTime;
|
69
69
|
levelDown = false;
|
@@ -79,4 +79,22 @@
|
|
79
79
|
Debug.LogWarning(e.Message);
|
80
80
|
}
|
81
81
|
}
|
82
|
+
|
83
|
+
private void OnTriggerEnter(Collider other)
|
84
|
+
{
|
85
|
+
if (other.gameObject.CompareTag("start"))
|
86
|
+
{
|
87
|
+
start += 1;
|
88
|
+
setcountText();
|
89
|
+
}
|
90
|
+
}
|
91
|
+
void SetCountText()
|
92
|
+
{
|
93
|
+
scoreText.text = "Score : " + score.ToString();
|
94
|
+
}
|
95
|
+
void setcountText()
|
96
|
+
{
|
97
|
+
startText.text = "start : " + start.ToString();
|
98
|
+
}
|
99
|
+
}
|
82
100
|
```
|
1
前回は具体的に閾値などについて理解しておらず意味不明の質問をしていた
title
CHANGED
File without changes
|
body
CHANGED
@@ -1,12 +1,12 @@
|
|
1
1
|
### 行いたい事
|
2
|
-
温度センサーを用いて温度を測定しており、Arduinoとunityをシリアル通信させています。そこで、Arduinoで処理したデータ
|
2
|
+
温度センサーを用いて温度を測定しており、Arduinoとunityをシリアル通信させています。そこで、Arduinoで処理したデータを閾値とする時どのようにすればいいか分からないです。
|
3
3
|
### 現在行えている事
|
4
4
|
unity側にて閾値の値を事前に決めておき閾値超えた時と超えてない時の処理についてはできています。Arduino側にて温度センサーで取得したデータの平滑化も行っています。
|
5
5
|
### お聞きしたい事
|
6
|
-
unity側にて
|
6
|
+
unity側にてArduinoから得たデータを閾値として用いる方法を教えて頂きたいです。
|
7
|
+
### コードの説明
|
8
|
+
閾値を0としておきstartを通過したときのArduinoからの出力を閾値としたいです。startのすぐ後にもう1つstartを用意して(ユーザの視点からはみえないようにする)startを通った時の値を閾値としたいです。実際に実行してみたところ、start1とstart2を入力の値が400ぐらいで通り抜けたので値を470ぐらいまであげたのにも関わらず閾値を超えた時の処理が行われなかったので悩んでおります。
|
7
9
|
|
8
|
-
###検出したい箇所の参考画像
|
9
|
-

|
10
10
|
###unity側でのコード
|
11
11
|
```ここに言語を入力
|
12
12
|
コード
|
@@ -16,17 +16,22 @@
|
|
16
16
|
|
17
17
|
public SerialHandler serialHandler;
|
18
18
|
|
19
|
-
public float threshold =
|
19
|
+
public float threshold = 0f; //閾値
|
20
20
|
|
21
|
-
public Vector3 velocity = new Vector3(0f, 0f,
|
21
|
+
public Vector3 velocity = new Vector3(0f, 0f, 1.0f);
|
22
|
+
public Text sensorText;
|
23
|
+
public Text startText;
|
24
|
+
private bool levelDown = false;
|
25
|
+
private int start;
|
26
|
+
public static float starT { get; internal set; }
|
22
27
|
|
23
|
-
|
24
|
-
|
25
28
|
void Start()
|
26
29
|
|
27
30
|
{
|
28
31
|
|
29
32
|
serialHandler.OnDataReceived += OnDataReceived;
|
33
|
+
start = 0;
|
34
|
+
setcountText();
|
30
35
|
|
31
36
|
}
|
32
37
|
|
@@ -43,34 +48,35 @@
|
|
43
48
|
System.StringSplitOptions.None);
|
44
49
|
|
45
50
|
if (data.Length < 2) return;
|
51
|
+
sensorText.text = "ondo:" + message;
|
46
52
|
|
47
53
|
|
48
54
|
|
49
55
|
try
|
50
56
|
|
51
57
|
{
|
52
|
-
|
53
58
|
var temperature = float.Parse(data[0]);
|
54
59
|
|
60
|
+
if(start == 1) //入力した値を閾値としたい
|
61
|
+
{
|
55
|
-
|
62
|
+
temperature = peak;
|
63
|
+
peak += 20;
|
64
|
+
}
|
56
65
|
|
66
|
+
if ((temperature > peak)&&(start == 2)) //閾値を超えた時の処理
|
57
67
|
{
|
58
|
-
|
68
|
+
transform.localPosition += (levelDown) ? new Vector3(0.0f, 10.0f, 0.0f) * Time.deltaTime : velocity * Time.deltaTime;
|
69
|
+
levelDown = false;
|
70
|
+
}
|
71
|
+
else
|
72
|
+
{
|
59
73
|
transform.localPosition += velocity * Time.deltaTime;
|
60
|
-
|
74
|
+
levelDown = true;
|
61
75
|
}
|
62
|
-
|
63
76
|
}
|
64
|
-
|
65
77
|
catch (System.Exception e)
|
66
|
-
|
67
78
|
{
|
68
|
-
|
69
79
|
Debug.LogWarning(e.Message);
|
70
|
-
|
71
80
|
}
|
72
|
-
|
73
81
|
}
|
74
|
-
|
75
|
-
}
|
76
82
|
```
|