質問編集履歴

3

変えた。

2021/10/26 13:07

投稿

退会済みユーザー
test CHANGED
File without changes
test CHANGED
@@ -12,6 +12,12 @@
12
12
 
13
13
  しかし、メッセージ"こおりでできたいえだ。"を3回表示した後、"おや?かゆいところがあるようだ"を表示するまで、文字が一文字ずつ出ず、いっぺんに表示されてしまいます。
14
14
 
15
+ メッセージ関数が何回も呼び出されてしまっているからかと思いましたが、
16
+
17
+ それらしい部分は見当たりませんでした。
18
+
19
+
20
+
15
21
  どうしたらいいですか?
16
22
 
17
23
 

2

詳しくしました。

2021/10/26 13:07

投稿

退会済みユーザー
test CHANGED
File without changes
test CHANGED
@@ -4,17 +4,19 @@
4
4
 
5
5
  [参考にしたサイト](https://gametukurikata.com/program/rpgmessage)
6
6
 
7
- しかし、55行目でエラーが出ます。内容は
7
+
8
-
9
- Object reference not set to an instance of an object
8
+
10
-
11
- です。他オブジェクトから、スクリプト側の関数を呼び出した時に出ます。
9
+ 、呼び出側に問題があったそのスクリプトも書いておきます。
10
+
12
-
11
+ どういうことを実現したいかというと、建造物(タグ house)に触れたかつzキーが押された時に、文字を表示するというものです。文字を表示している最中でzキーが押される場合を想定して、キーが押されたのを検知した瞬間、コライダーがオフになるようにしてあります。
12
+
13
+ しかし、メッセージ"こおりでできたいえだ。"を3回表示した後、"おや?かゆいところがあるようだ"を表示するまで、文字が一文字ずつ出ず、いっぺんに表示されてしまいます。
14
+
13
- unityのばーじょんは2020.3.20f1です
15
+ どうしたらいいですか?
14
-
15
-
16
-
16
+
17
+
18
+
17
- スクリプト
19
+ スクリプト メッセージ
18
20
 
19
21
 
20
22
 
@@ -259,3 +261,245 @@
259
261
  }
260
262
 
261
263
  ```
264
+
265
+
266
+
267
+ スクリプト 呼び出す側
268
+
269
+
270
+
271
+ ```
272
+
273
+ using System.Collections;
274
+
275
+ using System.Collections.Generic;
276
+
277
+ using UnityEngine;
278
+
279
+
280
+
281
+ public class NewBehaviourScript : MonoBehaviour
282
+
283
+ {
284
+
285
+ const float value = 0.1f;
286
+
287
+ bool moving = true;
288
+
289
+ public float speed = 6.0F; //歩行速度
290
+
291
+ public float jumpSpeed = 8.0F; //ジャンプ力
292
+
293
+ public float gravity = 20.0F; //重力の大きさ
294
+
295
+ public float rotateSpeed = 3.0F; //回転速度
296
+
297
+ private float mX, mY;
298
+
299
+ private CharacterController controller;
300
+
301
+ private Vector3 moveDirection = Vector3.zero;
302
+
303
+ private float h,v;
304
+
305
+ Animator animator;
306
+
307
+ public AudioClip footsteps;
308
+
309
+ protected AudioSource audioSource;
310
+
311
+ [SerializeField] AudioClip[] clips;
312
+
313
+ [SerializeField] bool randomizePitch = true;
314
+
315
+ [SerializeField] float pitchRange = 0.1f;
316
+
317
+ int coliderchecker = 0;
318
+
319
+ public bool flag = false;
320
+
321
+ bool atatta = false;
322
+
323
+ [SerializeField]
324
+
325
+ private Message messageScript;
326
+
327
+ int housetime;
328
+
329
+ public int icegold = 0;
330
+
331
+
332
+
333
+
334
+
335
+
336
+
337
+
338
+
339
+
340
+
341
+
342
+
343
+ // Use this for initialization
344
+
345
+ void Start ()
346
+
347
+ {
348
+
349
+ controller = GetComponent<CharacterController>();
350
+
351
+ animator = GetComponent<Animator>();
352
+
353
+ audioSource = GetComponents<AudioSource>()[0];
354
+
355
+ }
356
+
357
+
358
+
359
+ // Update is called once per frame
360
+
361
+ void Update ()
362
+
363
+ {
364
+
365
+ if(moving == true)
366
+
367
+ {
368
+
369
+ h = Input.GetAxis ("Horizontal");
370
+
371
+ v = Input.GetAxis ("Vertical");
372
+
373
+ }
374
+
375
+ moveDirection = new Vector3 (h, 0, v);
376
+
377
+ //moveDirection = transform.TransformDirection(moveDirection);
378
+
379
+ moveDirection *= speed * 3.0f;
380
+
381
+
382
+
383
+ moveDirection.y -= gravity * Time.deltaTime;
384
+
385
+ controller.Move(moveDirection * Time.deltaTime);
386
+
387
+
388
+
389
+ if (Input.GetKeyDown(KeyCode.Z))
390
+
391
+ {
392
+
393
+ if(flag == true)
394
+
395
+ {
396
+
397
+
398
+
399
+ }
400
+
401
+ if(flag == false)
402
+
403
+ {
404
+
405
+ GetComponent<BoxCollider>().enabled = true;
406
+
407
+ if(coliderchecker == 1)
408
+
409
+ {
410
+
411
+ housetime++;
412
+
413
+ flag = true;
414
+
415
+ if(housetime < 4)
416
+
417
+ {
418
+
419
+ messageScript.SetMessagePanel ("こおりでできたいえだ");
420
+
421
+ }
422
+
423
+ if(housetime == 4)
424
+
425
+ {
426
+
427
+ messageScript.SetMessagePanel ("おや?かゆいところがあるようだ。");
428
+
429
+ }
430
+
431
+ if(housetime == 5)
432
+
433
+ {
434
+
435
+ messageScript.SetMessagePanel ("かゆいところをかいてあげた・・・<>いえは よろこんでいるみたいだ。\nいえは おれいに アイスゴールドを 20こ くれた!");
436
+
437
+ icegold =+ 20;
438
+
439
+ }
440
+
441
+ GetComponent<BoxCollider>().enabled = false;
442
+
443
+ }
444
+
445
+ }
446
+
447
+ }
448
+
449
+ }
450
+
451
+
452
+
453
+
454
+
455
+ void OnCollisionStay(Collision collision)
456
+
457
+ {
458
+
459
+ atatta = true;
460
+
461
+ }
462
+
463
+ void OnTriggerEnter(Collider other)
464
+
465
+ {
466
+
467
+ if (other.gameObject.tag == "house")
468
+
469
+ {
470
+
471
+ coliderchecker = 1;
472
+
473
+ }
474
+
475
+ else if (other.gameObject.tag == "store")
476
+
477
+ {
478
+
479
+ coliderchecker = 2;
480
+
481
+ }
482
+
483
+ }
484
+
485
+ void OnTriggerExit(Collider other)
486
+
487
+ {
488
+
489
+ coliderchecker = 0;
490
+
491
+ }
492
+
493
+ void OnCollisionExit(Collision collision)
494
+
495
+ {
496
+
497
+ atatta = false;
498
+
499
+ }
500
+
501
+ }
502
+
503
+
504
+
505
+ ```

1

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

2021/10/26 10:34

投稿

退会済みユーザー
test CHANGED
File without changes
test CHANGED
@@ -18,7 +18,7 @@
18
18
 
19
19
 
20
20
 
21
-
21
+ ```
22
22
 
23
23
  using UnityEngine;
24
24
 
@@ -257,3 +257,5 @@
257
257
  }
258
258
 
259
259
  }
260
+
261
+ ```