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

質問編集履歴

2

解決しました。

2018/06/23 13:58

投稿

Herowin
Herowin

スコア9

title CHANGED
File without changes
body CHANGED
@@ -1,5 +1,4 @@
1
1
  閲覧ありがとうございます。
2
- Unityやってて困ったので質問させてもらいます。
3
2
  ランダムな位置を目標地点として設定し、そこに向かって進んで
4
3
  ターゲットに近づいたら、新しい目標地点を設定し、同じことを繰り返すって処理まで出来たのですが
5
4
  そうではなく**目的地に着いたら1秒止まって、またランダムな目標地点を設定し、同じことを繰り返す**処理書きたいのですが

1

解決しました

2018/06/23 13:58

投稿

Herowin
Herowin

スコア9

title CHANGED
@@ -1,1 +1,1 @@
1
- 1秒止まってから新しい目標地点を設定し、同じことを繰り返す所で困ってます
1
+ 同じことを繰り返す所で困ってます
body CHANGED
@@ -5,51 +5,4 @@
5
5
  そうではなく**目的地に着いたら1秒止まって、またランダムな目標地点を設定し、同じことを繰り返す**処理書きたいのですが
6
6
  色々調べてチャレンジして上手くいかなくて困ってます。
7
7
 
8
- ソースコード
9
-
10
- using System.Collections;
11
- using System.Collections.Generic;
12
- using UnityEngine;
13
-
14
- public class Randamu : MonoBehaviour {
15
-
16
-
17
- // プレイヤーの速度
18
- public float speed = 5f;
19
-
20
- public float rotationSmooth = 1f;
21
- public Vector3 targetPosition;
22
-
23
- public float changeTargetSqrDistance = 40f;
24
-
25
- void Start()
8
+ 追記、無事解決しました。
26
- {
27
- targetPosition = GetRandomPositionOnLevel();
28
- }
29
-
30
- void Update()
31
- {
32
-
33
- // 現在地から目標地点までの距離を取得、短かったならもう一度目標地点を設定しなおす
34
- float sqrDistanceToTarget = Vector3.SqrMagnitude(transform.position - targetPosition);
35
- if (sqrDistanceToTarget < changeTargetSqrDistance)
36
- {
37
- targetPosition = GetRandomPositionOnLevel();
38
- }
39
-
40
- // 目標地点の方向を向く
41
- Quaternion targetRotation = Quaternion.LookRotation(targetPosition - transform.position);
42
- transform.rotation = Quaternion.Slerp(transform.rotation, targetRotation, Time.deltaTime * rotationSmooth);
43
-
44
- // 前方に進む
45
- transform.Translate(Vector3.forward * speed * Time.deltaTime);
46
- }
47
-
48
- public Vector3 GetRandomPositionOnLevel()
49
- {
50
- // 動き回る範囲
51
- float levelSize = 8f;
52
-
53
- return new Vector3(Random.Range(-levelSize, levelSize), 0, Random.Range(-levelSize, levelSize));
54
- }
55
- }