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