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

質問編集履歴

3

変えた。

2021/10/26 13:07

投稿

退会済みユーザー
title CHANGED
File without changes
body CHANGED
@@ -5,6 +5,9 @@
5
5
  で、呼び出す側に問題があったので、そのスクリプトも書いておきます。
6
6
  どういうことを実現したいかというと、建造物(タグ house)に触れたかつzキーが押された時に、文字を表示するというものです。文字を表示している最中でzキーが押される場合を想定して、キーが押されたのを検知した瞬間、コライダーがオフになるようにしてあります。
7
7
  しかし、メッセージ"こおりでできたいえだ。"を3回表示した後、"おや?かゆいところがあるようだ"を表示するまで、文字が一文字ずつ出ず、いっぺんに表示されてしまいます。
8
+ メッセージ関数が何回も呼び出されてしまっているからかと思いましたが、
9
+ それらしい部分は見当たりませんでした。
10
+
8
11
  どうしたらいいですか?
9
12
 
10
13
  スクリプト メッセージ

2

詳しくしました。

2021/10/26 13:07

投稿

退会済みユーザー
title CHANGED
File without changes
body CHANGED
@@ -1,13 +1,14 @@
1
1
  unityで、流れるテキスト表示をしたいと思っています。
2
2
  とりあえずこのサイトを参考にしました。
3
3
  [参考にしたサイト](https://gametukurikata.com/program/rpgmessage)
4
- しかし、55行目でエラーが出ます。内容は
5
- Object reference not set to an instance of an object
6
- です。他のオブジェクトから、スクリプト側の関数を呼び出した時に出ます。
7
- unityのばーじょんは2020.3.20f1です。
8
4
 
5
+ で、呼び出す側に問題があったので、そのスクリプトも書いておきます。
6
+ どういうことを実現したいかというと、建造物(タグ house)に触れたかつzキーが押された時に、文字を表示するというものです。文字を表示している最中でzキーが押される場合を想定して、キーが押されたのを検知した瞬間、コライダーがオフになるようにしてあります。
7
+ しかし、メッセージ"こおりでできたいえだ。"を3回表示した後、"おや?かゆいところがあるようだ"を表示するまで、文字が一文字ずつ出ず、いっぺんに表示されてしまいます。
9
- スクリプト
8
+ どうしたらいいですか?
10
9
 
10
+ スクリプト メッセージ
11
+
11
12
  ```
12
13
  using UnityEngine;
13
14
  using System.Collections;
@@ -128,4 +129,125 @@
128
129
  transform.GetChild(0).gameObject.SetActive(true);
129
130
  }
130
131
  }
132
+ ```
133
+
134
+ スクリプト 呼び出す側
135
+
136
+ ```
137
+ using System.Collections;
138
+ using System.Collections.Generic;
139
+ using UnityEngine;
140
+
141
+ public class NewBehaviourScript : MonoBehaviour
142
+ {
143
+ const float value = 0.1f;
144
+ bool moving = true;
145
+ public float speed = 6.0F; //歩行速度
146
+ public float jumpSpeed = 8.0F; //ジャンプ力
147
+ public float gravity = 20.0F; //重力の大きさ
148
+ public float rotateSpeed = 3.0F; //回転速度
149
+ private float mX, mY;
150
+ private CharacterController controller;
151
+ private Vector3 moveDirection = Vector3.zero;
152
+ private float h,v;
153
+ Animator animator;
154
+ public AudioClip footsteps;
155
+ protected AudioSource audioSource;
156
+ [SerializeField] AudioClip[] clips;
157
+ [SerializeField] bool randomizePitch = true;
158
+ [SerializeField] float pitchRange = 0.1f;
159
+ int coliderchecker = 0;
160
+ public bool flag = false;
161
+ bool atatta = false;
162
+ [SerializeField]
163
+ private Message messageScript;
164
+ int housetime;
165
+ public int icegold = 0;
166
+
167
+
168
+
169
+
170
+
171
+
172
+ // Use this for initialization
173
+ void Start ()
174
+ {
175
+ controller = GetComponent<CharacterController>();
176
+ animator = GetComponent<Animator>();
177
+ audioSource = GetComponents<AudioSource>()[0];
178
+ }
179
+
180
+ // Update is called once per frame
181
+ void Update ()
182
+ {
183
+ if(moving == true)
184
+ {
185
+ h = Input.GetAxis ("Horizontal");
186
+ v = Input.GetAxis ("Vertical");
187
+ }
188
+ moveDirection = new Vector3 (h, 0, v);
189
+ //moveDirection = transform.TransformDirection(moveDirection);
190
+ moveDirection *= speed * 3.0f;
191
+
192
+ moveDirection.y -= gravity * Time.deltaTime;
193
+ controller.Move(moveDirection * Time.deltaTime);
194
+
195
+ if (Input.GetKeyDown(KeyCode.Z))
196
+ {
197
+ if(flag == true)
198
+ {
199
+
200
+ }
201
+ if(flag == false)
202
+ {
203
+ GetComponent<BoxCollider>().enabled = true;
204
+ if(coliderchecker == 1)
205
+ {
206
+ housetime++;
207
+ flag = true;
208
+ if(housetime < 4)
209
+ {
210
+ messageScript.SetMessagePanel ("こおりでできたいえだ");
211
+ }
212
+ if(housetime == 4)
213
+ {
214
+ messageScript.SetMessagePanel ("おや?かゆいところがあるようだ。");
215
+ }
216
+ if(housetime == 5)
217
+ {
218
+ messageScript.SetMessagePanel ("かゆいところをかいてあげた・・・<>いえは よろこんでいるみたいだ。\nいえは おれいに アイスゴールドを 20こ くれた!");
219
+ icegold =+ 20;
220
+ }
221
+ GetComponent<BoxCollider>().enabled = false;
222
+ }
223
+ }
224
+ }
225
+ }
226
+
227
+
228
+ void OnCollisionStay(Collision collision)
229
+ {
230
+ atatta = true;
231
+ }
232
+ void OnTriggerEnter(Collider other)
233
+ {
234
+ if (other.gameObject.tag == "house")
235
+ {
236
+ coliderchecker = 1;
237
+ }
238
+ else if (other.gameObject.tag == "store")
239
+ {
240
+ coliderchecker = 2;
241
+ }
242
+ }
243
+ void OnTriggerExit(Collider other)
244
+ {
245
+ coliderchecker = 0;
246
+ }
247
+ void OnCollisionExit(Collision collision)
248
+ {
249
+ atatta = false;
250
+ }
251
+ }
252
+
131
253
  ```

1

スクリプトとして表示させました。

2021/10/26 10:34

投稿

退会済みユーザー
title CHANGED
File without changes
body CHANGED
@@ -8,7 +8,7 @@
8
8
 
9
9
  スクリプト
10
10
 
11
-
11
+ ```
12
12
  using UnityEngine;
13
13
  using System.Collections;
14
14
  using UnityEngine.UI;
@@ -127,4 +127,5 @@
127
127
  SetMessage(message);
128
128
  transform.GetChild(0).gameObject.SetActive(true);
129
129
  }
130
- }
130
+ }
131
+ ```