回答編集履歴
15
修正
answer
CHANGED
@@ -27,10 +27,7 @@
|
|
27
27
|
ThirdPersonCharacterのカメラを子にしていない時と同じような動きは下記コードで近付けると思います。
|
28
28
|
|
29
29
|
**・変更点**
|
30
|
-
`transform.Translate(translation);`
|
31
|
-
↓ 変更
|
32
|
-
`transform.position += translation;`
|
30
|
+
`transform.Translate(translation);`を`transform.position += translation;`に変更。
|
33
|
-
|
34
31
|
滑らかな回転にする為`Quaternion.Slerp`を追加。
|
35
32
|
|
36
33
|
```C#
|
@@ -62,6 +59,7 @@
|
|
62
59
|
}
|
63
60
|
```
|
64
61
|
|
62
|
+
---
|
65
63
|
**・ThirdPersonCharacterとの相違点**
|
66
64
|
・アニメーション制御していないのでもちろん移動アニメをしない
|
67
65
|
・キャラクターの子にカメラを入れても追跡の挙動にならないのでおかしくなる(カメラはキャラの子にしないで下さい)
|
14
修正
answer
CHANGED
@@ -26,8 +26,11 @@
|
|
26
26
|
**・追記1:コメント内容を受けての新しいコード**
|
27
27
|
ThirdPersonCharacterのカメラを子にしていない時と同じような動きは下記コードで近付けると思います。
|
28
28
|
|
29
|
-
・変更点
|
29
|
+
**・変更点**
|
30
|
+
`transform.Translate(translation);`
|
31
|
+
↓ 変更
|
30
|
-
`transform.
|
32
|
+
`transform.position += translation;`
|
33
|
+
|
31
34
|
滑らかな回転にする為`Quaternion.Slerp`を追加。
|
32
35
|
|
33
36
|
```C#
|
13
修正
answer
CHANGED
@@ -26,8 +26,9 @@
|
|
26
26
|
**・追記1:コメント内容を受けての新しいコード**
|
27
27
|
ThirdPersonCharacterのカメラを子にしていない時と同じような動きは下記コードで近付けると思います。
|
28
28
|
|
29
|
+
・変更点
|
29
|
-
transform.position += translation;に変えて下さい。
|
30
|
+
`transform.Translate(translation);`を`transform.position += translation;`に変えて下さい。
|
30
|
-
|
31
|
+
滑らかな回転にする為`Quaternion.Slerp`を追加。
|
31
32
|
|
32
33
|
```C#
|
33
34
|
void Update()
|
12
修正
answer
CHANGED
@@ -25,16 +25,11 @@
|
|
25
25
|
---
|
26
26
|
**・追記1:コメント内容を受けての新しいコード**
|
27
27
|
ThirdPersonCharacterのカメラを子にしていない時と同じような動きは下記コードで近付けると思います。
|
28
|
+
|
29
|
+
transform.position += translation;に変えて下さい。
|
28
30
|
また想定違いだったら申し訳ないです。
|
29
31
|
|
30
32
|
```C#
|
31
|
-
using UnityEngine;
|
32
|
-
|
33
|
-
public class UnkomanControl : MonoBehaviour
|
34
|
-
{
|
35
|
-
private Vector3 velocity; //新しく追加した変数
|
36
|
-
float rotSpeed = 0.2f; //新しく追加した変数
|
37
|
-
|
38
33
|
void Update()
|
39
34
|
{
|
40
35
|
float x;
|
@@ -42,22 +37,25 @@
|
|
42
37
|
Vector3 translation = Vector3.zero;
|
43
38
|
float runVelocity = 7.0f;
|
44
39
|
|
40
|
+
z = Input.GetAxis("Vertical");
|
45
41
|
x = Input.GetAxis("Horizontal");
|
46
|
-
z = Input.GetAxis("Vertical");
|
47
42
|
|
48
43
|
translation.x = x * runVelocity * Time.deltaTime;
|
49
44
|
translation.z = z * runVelocity * Time.deltaTime;
|
50
45
|
|
51
|
-
|
46
|
+
transform.position += translation;
|
52
|
-
velocity = translation.normalized * runVelocity * Time.deltaTime;
|
53
47
|
|
48
|
+
Vector3 diff = transform.position - UnkomanPos;
|
54
|
-
|
49
|
+
Vector3 stop = Vector3.zero;
|
50
|
+
|
51
|
+
if (x != 0)
|
55
52
|
{
|
56
|
-
Quaternion look = Quaternion.LookRotation(
|
53
|
+
Quaternion look = Quaternion.LookRotation(diff,Vector3.up);
|
57
|
-
transform.rotation = Quaternion.Slerp(transform.rotation, look,
|
54
|
+
transform.rotation = Quaternion.Slerp(transform.rotation, look, 0.2f);
|
58
|
-
transform.position += translation;
|
59
55
|
}
|
56
|
+
|
60
|
-
|
57
|
+
UnkomanPos = transform.position;
|
58
|
+
}
|
61
59
|
```
|
62
60
|
|
63
61
|
**・ThirdPersonCharacterとの相違点**
|
11
修正
answer
CHANGED
@@ -60,11 +60,6 @@
|
|
60
60
|
//**
|
61
61
|
```
|
62
62
|
|
63
|
-
**・解説**
|
64
|
-
`Quaternion.LookRotation(velocity);`で入力されたベクトル方向を算出。
|
65
|
-
`Quaternion.Slerp(transform.rotation, look, rotSpeed);`で上記方向に滑らかな回転。
|
66
|
-
`transform.position += translation;`最後にキャラクター位置を動かしています。
|
67
|
-
|
68
63
|
**・ThirdPersonCharacterとの相違点**
|
69
64
|
・アニメーション制御していないのでもちろん移動アニメをしない
|
70
65
|
・キャラクターの子にカメラを入れても追跡の挙動にならないのでおかしくなる(カメラはキャラの子にしないで下さい)
|
10
修正
answer
CHANGED
@@ -60,8 +60,7 @@
|
|
60
60
|
//**
|
61
61
|
```
|
62
62
|
|
63
|
-
|
63
|
+
**・解説**
|
64
|
-
|
65
64
|
`Quaternion.LookRotation(velocity);`で入力されたベクトル方向を算出。
|
66
65
|
`Quaternion.Slerp(transform.rotation, look, rotSpeed);`で上記方向に滑らかな回転。
|
67
66
|
`transform.position += translation;`最後にキャラクター位置を動かしています。
|
9
修正
answer
CHANGED
@@ -27,8 +27,6 @@
|
|
27
27
|
ThirdPersonCharacterのカメラを子にしていない時と同じような動きは下記コードで近付けると思います。
|
28
28
|
また想定違いだったら申し訳ないです。
|
29
29
|
|
30
|
-
新しい処理の内容は`Translateを削除して追記した部分`以下です。
|
31
|
-
|
32
30
|
```C#
|
33
31
|
using UnityEngine;
|
34
32
|
|
@@ -62,8 +60,10 @@
|
|
62
60
|
//**
|
63
61
|
```
|
64
62
|
|
63
|
+
新しい処理の内容は`Translateを削除して追記した部分`以下です。
|
64
|
+
|
65
|
-
`Quaternion.LookRotation(velocity);`で入力されたベクトル方向を算出
|
65
|
+
`Quaternion.LookRotation(velocity);`で入力されたベクトル方向を算出。
|
66
|
-
`Quaternion.Slerp(transform.rotation, look, rotSpeed);`で滑らかな回転。
|
66
|
+
`Quaternion.Slerp(transform.rotation, look, rotSpeed);`で上記方向に滑らかな回転。
|
67
67
|
`transform.position += translation;`最後にキャラクター位置を動かしています。
|
68
68
|
|
69
69
|
**・ThirdPersonCharacterとの相違点**
|
8
修正
answer
CHANGED
@@ -71,4 +71,4 @@
|
|
71
71
|
・キャラクターの子にカメラを入れても追跡の挙動にならないのでおかしくなる(カメラはキャラの子にしないで下さい)
|
72
72
|
・Uターンした時の減衰が無い
|
73
73
|
|
74
|
-
ThirdPersonCharacterと全く同じ挙動にするのであれば
|
74
|
+
ThirdPersonCharacterと全く同じ挙動にするのであればここからの道のりは結構あるので元のコード参照した方が良いです。
|
7
修正
answer
CHANGED
@@ -23,7 +23,7 @@
|
|
23
23
|
`Update`内をこれに差し替えて想定する動きかになるかどうか教えて下さい。
|
24
24
|
|
25
25
|
---
|
26
|
-
**・追記1:コメント内容を受けて新しいコード**
|
26
|
+
**・追記1:コメント内容を受けての新しいコード**
|
27
27
|
ThirdPersonCharacterのカメラを子にしていない時と同じような動きは下記コードで近付けると思います。
|
28
28
|
また想定違いだったら申し訳ないです。
|
29
29
|
|
@@ -62,6 +62,10 @@
|
|
62
62
|
//**
|
63
63
|
```
|
64
64
|
|
65
|
+
`Quaternion.LookRotation(velocity);`で入力されたベクトル方向を算出して
|
66
|
+
`Quaternion.Slerp(transform.rotation, look, rotSpeed);`で滑らかな回転。
|
67
|
+
`transform.position += translation;`最後にキャラクター位置を動かしています。
|
68
|
+
|
65
69
|
**・ThirdPersonCharacterとの相違点**
|
66
70
|
・アニメーション制御していないのでもちろん移動アニメをしない
|
67
71
|
・キャラクターの子にカメラを入れても追跡の挙動にならないのでおかしくなる(カメラはキャラの子にしないで下さい)
|
6
修正
answer
CHANGED
@@ -23,12 +23,12 @@
|
|
23
23
|
`Update`内をこれに差し替えて想定する動きかになるかどうか教えて下さい。
|
24
24
|
|
25
25
|
---
|
26
|
-
上記コードでは要件満たせないらしいので以下は元のコードを修正して下さい。
|
27
|
-
|
28
|
-
**・追記1:コメント内容を受けて**
|
26
|
+
**・追記1:コメント内容を受けて新しいコード**
|
29
27
|
ThirdPersonCharacterのカメラを子にしていない時と同じような動きは下記コードで近付けると思います。
|
30
28
|
また想定違いだったら申し訳ないです。
|
31
29
|
|
30
|
+
新しい処理の内容は`Translateを削除して追記した部分`以下です。
|
31
|
+
|
32
32
|
```C#
|
33
33
|
using UnityEngine;
|
34
34
|
|
5
修正
answer
CHANGED
@@ -25,8 +25,46 @@
|
|
25
25
|
---
|
26
26
|
上記コードでは要件満たせないらしいので以下は元のコードを修正して下さい。
|
27
27
|
|
28
|
-
**・追記1**
|
28
|
+
**・追記1:コメント内容を受けて**
|
29
|
-
|
29
|
+
ThirdPersonCharacterのカメラを子にしていない時と同じような動きは下記コードで近付けると思います。
|
30
|
+
また想定違いだったら申し訳ないです。
|
30
31
|
|
32
|
+
```C#
|
33
|
+
using UnityEngine;
|
34
|
+
|
35
|
+
public class UnkomanControl : MonoBehaviour
|
36
|
+
{
|
37
|
+
private Vector3 velocity; //新しく追加した変数
|
38
|
+
float rotSpeed = 0.2f; //新しく追加した変数
|
39
|
+
|
40
|
+
void Update()
|
41
|
+
{
|
42
|
+
float x;
|
43
|
+
float z;
|
44
|
+
Vector3 translation = Vector3.zero;
|
45
|
+
float runVelocity = 7.0f;
|
46
|
+
|
47
|
+
x = Input.GetAxis("Horizontal");
|
48
|
+
z = Input.GetAxis("Vertical");
|
49
|
+
|
50
|
+
translation.x = x * runVelocity * Time.deltaTime;
|
51
|
+
translation.z = z * runVelocity * Time.deltaTime;
|
52
|
+
|
31
|
-
|
53
|
+
//** Translateを削除して追記した部分
|
54
|
+
velocity = translation.normalized * runVelocity * Time.deltaTime;
|
55
|
+
|
32
|
-
|
56
|
+
if (velocity.magnitude > 0)
|
57
|
+
{
|
58
|
+
Quaternion look = Quaternion.LookRotation(velocity);
|
59
|
+
transform.rotation = Quaternion.Slerp(transform.rotation, look, rotSpeed);
|
60
|
+
transform.position += translation;
|
61
|
+
}
|
62
|
+
//**
|
63
|
+
```
|
64
|
+
|
65
|
+
**・ThirdPersonCharacterとの相違点**
|
66
|
+
・アニメーション制御していないのでもちろん移動アニメをしない
|
67
|
+
・キャラクターの子にカメラを入れても追跡の挙動にならないのでおかしくなる(カメラはキャラの子にしないで下さい)
|
68
|
+
・Uターンした時の減衰が無い
|
69
|
+
|
70
|
+
ThirdPersonCharacterと全く同じ挙動にするのであればやはり元のコード参照した方が良いです。
|
4
修正
answer
CHANGED
@@ -26,6 +26,7 @@
|
|
26
26
|
上記コードでは要件満たせないらしいので以下は元のコードを修正して下さい。
|
27
27
|
|
28
28
|
**・追記1**
|
29
|
-
>1.座標のベクトル計算からy軸のみを無効化する方法はないのでしょうか?
|
29
|
+
> 1.座標のベクトル計算からy軸のみを無効化する方法はないのでしょうか?
|
30
|
+
|
30
|
-
これの解決法ですがZ
|
31
|
+
取り合えずこれの解決法ですがZ移動をした際に回転処理をさせなければ良いです。
|
31
|
-
|
32
|
+
`if (diff != stop)`を`if (x != 0)`に変えて下さい
|
3
修正
answer
CHANGED
@@ -20,4 +20,12 @@
|
|
20
20
|
}
|
21
21
|
```
|
22
22
|
|
23
|
-
`Update`内をこれに差し替えて想定する動きかになるかどうか教えて下さい。
|
23
|
+
`Update`内をこれに差し替えて想定する動きかになるかどうか教えて下さい。
|
24
|
+
|
25
|
+
---
|
26
|
+
上記コードでは要件満たせないらしいので以下は元のコードを修正して下さい。
|
27
|
+
|
28
|
+
**・追記1**
|
29
|
+
>1.座標のベクトル計算からy軸のみを無効化する方法はないのでしょうか?
|
30
|
+
これの解決法ですがZ方向を押した際に回転させなければ良いです。
|
31
|
+
「if (diff != stop)」を「if (x != 0)」に変えて下さい
|
2
修正
answer
CHANGED
@@ -1,5 +1,5 @@
|
|
1
1
|
こんばんは
|
2
|
-
想定している回転具合が判らないのですがHorizontalを使った単純な回転は`transform.Rotate(
|
2
|
+
想定している回転具合が判らないのですがHorizontalを使った単純な回転は`transform.Rotate(0, x, 0);`だけで良いかと思います。
|
3
3
|
|
4
4
|
```C#
|
5
5
|
void Update()
|
@@ -16,7 +16,7 @@
|
|
16
16
|
translation.z = z * runVelocity * Time.deltaTime;
|
17
17
|
|
18
18
|
transform.Translate(translation);
|
19
|
-
transform.Rotate(
|
19
|
+
transform.Rotate(0, x, 0);
|
20
20
|
}
|
21
21
|
```
|
22
22
|
|
1
修正
answer
CHANGED
@@ -1,5 +1,5 @@
|
|
1
1
|
こんばんは
|
2
|
-
想定している回転具合が判らないのですが
|
2
|
+
想定している回転具合が判らないのですがHorizontalを使った単純な回転は`transform.Rotate(new Vector3(0, x, 0));`だけで良いかと思います。
|
3
3
|
|
4
4
|
```C#
|
5
5
|
void Update()
|