質問するログイン新規登録

質問編集履歴

3

コードの変更

2020/01/03 03:54

投稿

mitatoshi
mitatoshi

スコア12

title CHANGED
File without changes
body CHANGED
@@ -88,10 +88,7 @@
88
88
  setcountText();
89
89
  }
90
90
  }
91
- void SetCountText()
91
+
92
- {
93
- scoreText.text = "Score : " + score.ToString();
94
- }
95
92
  void setcountText()
96
93
  {
97
94
  startText.text = "start : " + start.ToString();

2

コードを変えました

2020/01/03 03:54

投稿

mitatoshi
mitatoshi

スコア12

title CHANGED
File without changes
body CHANGED
@@ -59,11 +59,11 @@
59
59
 
60
60
  if(start == 1)         //入力した値を閾値としたい
61
61
  {
62
- temperature = peak;
62
+ temperature = threshold;
63
63
  peak += 20;
64
64
  }
65
65
 
66
- if ((temperature > peak)&&(start == 2))  //閾値を超えた時の処理
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

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

2020/01/03 03:47

投稿

mitatoshi
mitatoshi

スコア12

title CHANGED
File without changes
body CHANGED
@@ -1,12 +1,12 @@
1
1
  ### 行いたい事
2
- 温度センサーを用いて温度を測定しており、Arduinoとunityをシリアル通信させています。そこで、Arduinoで処理したデータの下記画像の丸部分unity側にて閾値とする時どのようにすればいいか分からないです。
2
+ 温度センサーを用いて温度を測定しており、Arduinoとunityをシリアル通信させています。そこで、Arduinoで処理したデータを閾値とする時どのようにすればいいか分からないです。
3
3
  ### 現在行えている事
4
4
  unity側にて閾値の値を事前に決めておき閾値超えた時と超えてない時の処理についてはできています。Arduino側にて温度センサーで取得したデータの平滑化も行っています。
5
5
  ### お聞きしたい事
6
- unity側にて周期ごとのピを閾値と処理の方法を教えていただきたいです。※Arduino側にて周期ごとのピークをunity側に送りたいのとは違います。
6
+ unity側にてArduinoから得たデを閾値として用いる方法を教えてきたいです。
7
+ ### コードの説明
8
+ 閾値を0としておきstartを通過したときのArduinoからの出力を閾値としたいです。startのすぐ後にもう1つstartを用意して(ユーザの視点からはみえないようにする)startを通った時の値を閾値としたいです。実際に実行してみたところ、start1とstart2を入力の値が400ぐらいで通り抜けたので値を470ぐらいまであげたのにも関わらず閾値を超えた時の処理が行われなかったので悩んでおります。
7
9
 
8
- ###検出したい箇所の参考画像
9
- ![イメージ説明](aa9054f29300980f7bb377ab9e7428a5.jpeg)
10
10
  ###unity側でのコード
11
11
  ```ここに言語を入力
12
12
  コード
@@ -16,17 +16,22 @@
16
16
 
17
17
  public SerialHandler serialHandler;
18
18
 
19
- public float threshold = 350f; //閾値
19
+ public float threshold = 0f; //閾値
20
20
 
21
- public Vector3 velocity = new Vector3(0f, 0f, 0.6f);
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
- if (temperature > threshold)
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
  ```