回答編集履歴

15

修正

2020/03/31 14:32

投稿

Hawn
Hawn

スコア1222

test CHANGED
@@ -56,13 +56,7 @@
56
56
 
57
57
  **・変更点**
58
58
 
59
- `transform.Translate(translation);`
60
-
61
- ↓ 変更
62
-
63
- `transform.position += translation;`
59
+ `transform.Translate(translation);`を`transform.position += translation;`に変更。
64
-
65
-
66
60
 
67
61
  滑らかな回転にする為`Quaternion.Slerp`を追加。
68
62
 
@@ -126,6 +120,8 @@
126
120
 
127
121
 
128
122
 
123
+ ---
124
+
129
125
  **・ThirdPersonCharacterとの相違点**
130
126
 
131
127
  ・アニメーション制御していないのでもちろん移動アニメをしない

14

修正

2020/03/31 14:32

投稿

Hawn
Hawn

スコア1222

test CHANGED
@@ -54,9 +54,15 @@
54
54
 
55
55
 
56
56
 
57
- ・変更点
57
+ **・変更点**
58
58
 
59
+ `transform.Translate(translation);`
60
+
61
+ ↓ 変更
62
+
59
- `transform.Translate(translation);`を`transform.position += translation;`に変えて下さい。
63
+ `transform.position += translation;`
64
+
65
+
60
66
 
61
67
  滑らかな回転にする為`Quaternion.Slerp`を追加。
62
68
 

13

修正

2020/03/31 14:30

投稿

Hawn
Hawn

スコア1222

test CHANGED
@@ -54,9 +54,11 @@
54
54
 
55
55
 
56
56
 
57
- transform.position += translation;にえて下さい。
57
+ 更点
58
58
 
59
+ `transform.Translate(translation);`を`transform.position += translation;`に変えて下さい。
60
+
59
- また想定違いだった申し訳いです。
61
+ 回転にる為`Quaternion.Slerp`を追加
60
62
 
61
63
 
62
64
 

12

修正

2020/03/31 14:29

投稿

Hawn
Hawn

スコア1222

test CHANGED
@@ -52,25 +52,15 @@
52
52
 
53
53
  ThirdPersonCharacterのカメラを子にしていない時と同じような動きは下記コードで近付けると思います。
54
54
 
55
+
56
+
57
+ transform.position += translation;に変えて下さい。
58
+
55
59
  また想定違いだったら申し訳ないです。
56
60
 
57
61
 
58
62
 
59
63
  ```C#
60
-
61
- using UnityEngine;
62
-
63
-
64
-
65
- public class UnkomanControl : MonoBehaviour
66
-
67
- {
68
-
69
- private Vector3 velocity; //新しく追加した変数
70
-
71
- float rotSpeed = 0.2f; //新しく追加した変数
72
-
73
-
74
64
 
75
65
  void Update()
76
66
 
@@ -86,9 +76,9 @@
86
76
 
87
77
 
88
78
 
79
+ z = Input.GetAxis("Vertical");
80
+
89
81
  x = Input.GetAxis("Horizontal");
90
-
91
- z = Input.GetAxis("Vertical");
92
82
 
93
83
 
94
84
 
@@ -98,25 +88,31 @@
98
88
 
99
89
 
100
90
 
101
- //** Translateを削除して追記した部分
91
+ transform.position += translation;
102
-
103
- velocity = translation.normalized * runVelocity * Time.deltaTime;
104
92
 
105
93
 
106
94
 
95
+ Vector3 diff = transform.position - UnkomanPos;
96
+
107
- if (velocity.magnitude > 0)
97
+ Vector3 stop = Vector3.zero;
98
+
99
+
100
+
101
+ if (x != 0)
108
102
 
109
103
  {
110
104
 
111
- Quaternion look = Quaternion.LookRotation(velocity);
105
+ Quaternion look = Quaternion.LookRotation(diff,Vector3.up);
112
106
 
113
- transform.rotation = Quaternion.Slerp(transform.rotation, look, rotSpeed);
107
+ transform.rotation = Quaternion.Slerp(transform.rotation, look, 0.2f);
114
-
115
- transform.position += translation;
116
108
 
117
109
  }
118
110
 
111
+
112
+
119
- //**
113
+ UnkomanPos = transform.position;
114
+
115
+ }
120
116
 
121
117
  ```
122
118
 

11

修正

2020/03/31 14:25

投稿

Hawn
Hawn

スコア1222

test CHANGED
@@ -122,16 +122,6 @@
122
122
 
123
123
 
124
124
 
125
- **・解説**
126
-
127
- `Quaternion.LookRotation(velocity);`で入力されたベクトル方向を算出。
128
-
129
- `Quaternion.Slerp(transform.rotation, look, rotSpeed);`で上記方向に滑らかな回転。
130
-
131
- `transform.position += translation;`最後にキャラクター位置を動かしています。
132
-
133
-
134
-
135
125
  **・ThirdPersonCharacterとの相違点**
136
126
 
137
127
  ・アニメーション制御していないのでもちろん移動アニメをしない

10

修正

2020/03/31 14:20

投稿

Hawn
Hawn

スコア1222

test CHANGED
@@ -122,9 +122,7 @@
122
122
 
123
123
 
124
124
 
125
- 新しい処理の内容は`Translateを削除して追記した部分`以下です。
125
+ **・解説**
126
-
127
-
128
126
 
129
127
  `Quaternion.LookRotation(velocity);`で入力されたベクトル方向を算出。
130
128
 

9

修正

2020/03/31 14:19

投稿

Hawn
Hawn

スコア1222

test CHANGED
@@ -53,10 +53,6 @@
53
53
  ThirdPersonCharacterのカメラを子にしていない時と同じような動きは下記コードで近付けると思います。
54
54
 
55
55
  また想定違いだったら申し訳ないです。
56
-
57
-
58
-
59
- 新しい処理の内容は`Translateを削除して追記した部分`以下です。
60
56
 
61
57
 
62
58
 
@@ -126,9 +122,13 @@
126
122
 
127
123
 
128
124
 
129
- `Quaternion.LookRotation(velocity);`で入力されたベクトル方向算出して
125
+ 新しい処理の内容は`Translateを削除して追記した部分`以下です。
130
126
 
127
+
128
+
129
+ `Quaternion.LookRotation(velocity);`で入力されたベクトル方向を算出。
130
+
131
- `Quaternion.Slerp(transform.rotation, look, rotSpeed);`で滑らかな回転。
131
+ `Quaternion.Slerp(transform.rotation, look, rotSpeed);`で上記方向に滑らかな回転。
132
132
 
133
133
  `transform.position += translation;`最後にキャラクター位置を動かしています。
134
134
 

8

修正

2020/03/31 14:17

投稿

Hawn
Hawn

スコア1222

test CHANGED
@@ -144,4 +144,4 @@
144
144
 
145
145
 
146
146
 
147
- ThirdPersonCharacterと全く同じ挙動にするのであれば元のコード参照した方が良いです。
147
+ ThirdPersonCharacterと全く同じ挙動にするのであればここからの道のり結構あるので元のコード参照した方が良いです。

7

修正

2020/03/31 14:13

投稿

Hawn
Hawn

スコア1222

test CHANGED
@@ -48,7 +48,7 @@
48
48
 
49
49
  ---
50
50
 
51
- **・追記1:コメント内容を受けて新しいコード**
51
+ **・追記1:コメント内容を受けて新しいコード**
52
52
 
53
53
  ThirdPersonCharacterのカメラを子にしていない時と同じような動きは下記コードで近付けると思います。
54
54
 
@@ -126,6 +126,14 @@
126
126
 
127
127
 
128
128
 
129
+ `Quaternion.LookRotation(velocity);`で入力されたベクトル方向を算出して
130
+
131
+ `Quaternion.Slerp(transform.rotation, look, rotSpeed);`で滑らかな回転。
132
+
133
+ `transform.position += translation;`最後にキャラクター位置を動かしています。
134
+
135
+
136
+
129
137
  **・ThirdPersonCharacterとの相違点**
130
138
 
131
139
  ・アニメーション制御していないのでもちろん移動アニメをしない

6

修正

2020/03/31 14:12

投稿

Hawn
Hawn

スコア1222

test CHANGED
@@ -48,15 +48,15 @@
48
48
 
49
49
  ---
50
50
 
51
- 上記コードでは要件満たせないらしいので以下は元のコードを修正して下さい。
52
-
53
-
54
-
55
- **・追記1:コメント内容を受けて**
51
+ **・追記1:コメント内容を受けて新しいコード**
56
52
 
57
53
  ThirdPersonCharacterのカメラを子にしていない時と同じような動きは下記コードで近付けると思います。
58
54
 
59
55
  また想定違いだったら申し訳ないです。
56
+
57
+
58
+
59
+ 新しい処理の内容は`Translateを削除して追記した部分`以下です。
60
60
 
61
61
 
62
62
 

5

修正

2020/03/31 14:08

投稿

Hawn
Hawn

スコア1222

test CHANGED
@@ -52,12 +52,88 @@
52
52
 
53
53
 
54
54
 
55
- **・追記1**
55
+ **・追記1:コメント内容を受けて**
56
56
 
57
- > 1.座標ベクトル計算からy軸のみ無効化する方法はないしょうか?
57
+ ThirdPersonCharacterカメラ子にしていない時と同じような動きは下記コード近付けると思います。
58
+
59
+ また想定違いだったら申し訳ないです。
58
60
 
59
61
 
60
62
 
61
- 取り合えずこれの解決法ですがZ移動をした際に回転処理をさせなければ良いです。
63
+ ```C#
62
64
 
65
+ using UnityEngine;
66
+
67
+
68
+
69
+ public class UnkomanControl : MonoBehaviour
70
+
71
+ {
72
+
73
+ private Vector3 velocity; //新しく追加した変数
74
+
75
+ float rotSpeed = 0.2f; //新しく追加した変数
76
+
77
+
78
+
79
+ void Update()
80
+
81
+ {
82
+
83
+ float x;
84
+
85
+ float z;
86
+
87
+ Vector3 translation = Vector3.zero;
88
+
89
+ float runVelocity = 7.0f;
90
+
91
+
92
+
93
+ x = Input.GetAxis("Horizontal");
94
+
95
+ z = Input.GetAxis("Vertical");
96
+
97
+
98
+
99
+ translation.x = x * runVelocity * Time.deltaTime;
100
+
101
+ translation.z = z * runVelocity * Time.deltaTime;
102
+
103
+
104
+
105
+ //** Translateを削除して追記した部分
106
+
107
+ velocity = translation.normalized * runVelocity * Time.deltaTime;
108
+
109
+
110
+
63
- `if (diff != stop)`を`if (x != 0)`に変えて下さい
111
+ if (velocity.magnitude > 0)
112
+
113
+ {
114
+
115
+ Quaternion look = Quaternion.LookRotation(velocity);
116
+
117
+ transform.rotation = Quaternion.Slerp(transform.rotation, look, rotSpeed);
118
+
119
+ transform.position += translation;
120
+
121
+ }
122
+
123
+ //**
124
+
125
+ ```
126
+
127
+
128
+
129
+ **・ThirdPersonCharacterとの相違点**
130
+
131
+ ・アニメーション制御していないのでもちろん移動アニメをしない
132
+
133
+ ・キャラクターの子にカメラを入れても追跡の挙動にならないのでおかしくなる(カメラはキャラの子にしないで下さい)
134
+
135
+ ・Uターンした時の減衰が無い
136
+
137
+
138
+
139
+ ThirdPersonCharacterと全く同じ挙動にするのであればやはり元のコード参照した方が良いです。

4

修正

2020/03/31 14:07

投稿

Hawn
Hawn

スコア1222

test CHANGED
@@ -54,8 +54,10 @@
54
54
 
55
55
  **・追記1**
56
56
 
57
- >1.座標のベクトル計算からy軸のみを無効化する方法はないのでしょうか?
57
+ > 1.座標のベクトル計算からy軸のみを無効化する方法はないのでしょうか?
58
58
 
59
- これの解決法ですがZ方向を押した際に回転させなければ良いです。
60
59
 
60
+
61
+ 取り合えずこれの解決法ですがZ移動をした際に回転処理をさせなければ良いです。
62
+
61
- if (diff != stop)if (x != 0)に変えて下さい
63
+ `if (diff != stop)``if (x != 0)`に変えて下さい

3

修正

2020/03/31 09:01

投稿

Hawn
Hawn

スコア1222

test CHANGED
@@ -43,3 +43,19 @@
43
43
 
44
44
 
45
45
  `Update`内をこれに差し替えて想定する動きかになるかどうか教えて下さい。
46
+
47
+
48
+
49
+ ---
50
+
51
+ 上記コードでは要件満たせないらしいので以下は元のコードを修正して下さい。
52
+
53
+
54
+
55
+ **・追記1**
56
+
57
+ >1.座標のベクトル計算からy軸のみを無効化する方法はないのでしょうか?
58
+
59
+ これの解決法ですがZ方向を押した際に回転させなければ良いです。
60
+
61
+ 「if (diff != stop)」を「if (x != 0)」に変えて下さい

2

修正

2020/03/31 06:09

投稿

Hawn
Hawn

スコア1222

test CHANGED
@@ -1,6 +1,6 @@
1
1
  こんばんは
2
2
 
3
- 想定している回転具合が判らないのですがHorizontalを使った単純な回転は`transform.Rotate(new Vector3(0, x, 0));`だけで良いかと思います。
3
+ 想定している回転具合が判らないのですがHorizontalを使った単純な回転は`transform.Rotate(0, x, 0);`だけで良いかと思います。
4
4
 
5
5
 
6
6
 
@@ -34,7 +34,7 @@
34
34
 
35
35
  transform.Translate(translation);
36
36
 
37
- transform.Rotate(new Vector3(0, x, 0));
37
+ transform.Rotate(0, x, 0);
38
38
 
39
39
  }
40
40
 

1

修正

2020/03/30 16:25

投稿

Hawn
Hawn

スコア1222

test CHANGED
@@ -1,6 +1,6 @@
1
1
  こんばんは
2
2
 
3
- 想定している回転具合が判らないのですが単純なHorizontalを使った回転は`transform.Rotate(new Vector3(0, x, 0));`だけで良いかと思います。
3
+ 想定している回転具合が判らないのですがHorizontalを使った単純な回転は`transform.Rotate(new Vector3(0, x, 0));`だけで良いかと思います。
4
4
 
5
5
 
6
6