質問編集履歴
4
誤字
test
CHANGED
File without changes
|
test
CHANGED
@@ -8,7 +8,10 @@
|
|
8
8
|
TPSカメラでキャラクター周りを回転します。
|
9
9
|
キャラクター自身の移動方向は、カメラの正面方向に合わせて前進し、横に移動するときはキャラクターのみ横向きに回転します。
|
10
10
|
|
11
|
-
|
11
|
+
キャラクターの構成
|
12
|
+
・プレイヤー
|
13
|
+
・モデル(子)
|
14
|
+
・カメラ(子)
|
12
15
|
|
13
16
|
|
14
17
|
上記を実装したところ、カメラを左右に回転させたときにキャラクターの移動が速くなっているように見えました。
|
@@ -23,22 +26,22 @@
|
|
23
26
|
```c#
|
24
27
|
/// 移動入力
|
25
28
|
private void MoveInput()
|
26
|
-
|
29
|
+
{
|
27
|
-
|
30
|
+
var horizontal = Input.GetAxis("Horizontal");
|
28
|
-
|
31
|
+
var vertical = Input.GetAxis("Vertical");
|
29
32
|
|
30
33
|
|
31
|
-
|
34
|
+
if (Mathf.Abs(horizontal) > 0 || Mathf.Abs(vertical) > 0)
|
32
|
-
|
35
|
+
{
|
33
36
|
animator.SetBool("IsRun", true);
|
34
37
|
moveVector = new Vector3(horizontal, 0, vertical);
|
35
|
-
|
38
|
+
}
|
36
|
-
|
39
|
+
else
|
37
|
-
|
40
|
+
{
|
38
|
-
|
41
|
+
animator.SetBool("IsRun", false);
|
39
|
-
|
42
|
+
moveVector = Vector2.zero;
|
40
|
-
}
|
41
43
|
}
|
44
|
+
}
|
42
45
|
|
43
46
|
|
44
47
|
/// 移動処理
|
3
コード修正
test
CHANGED
File without changes
|
test
CHANGED
@@ -20,7 +20,7 @@
|
|
20
20
|
|
21
21
|
### 該当のソースコード
|
22
22
|
|
23
|
-
```
|
23
|
+
```c#
|
24
24
|
/// 移動入力
|
25
25
|
private void MoveInput()
|
26
26
|
{
|
2
コード追加
test
CHANGED
File without changes
|
test
CHANGED
@@ -21,6 +21,27 @@
|
|
21
21
|
### 該当のソースコード
|
22
22
|
|
23
23
|
```ここに言語名を入力
|
24
|
+
/// 移動入力
|
25
|
+
private void MoveInput()
|
26
|
+
{
|
27
|
+
var horizontal = Input.GetAxis("Horizontal");
|
28
|
+
var vertical = Input.GetAxis("Vertical");
|
29
|
+
|
30
|
+
|
31
|
+
if (Mathf.Abs(horizontal) > 0 || Mathf.Abs(vertical) > 0)
|
32
|
+
{
|
33
|
+
animator.SetBool("IsRun", true);
|
34
|
+
moveVector = new Vector3(horizontal, 0, vertical);
|
35
|
+
}
|
36
|
+
else
|
37
|
+
{
|
38
|
+
animator.SetBool("IsRun", false);
|
39
|
+
moveVector = Vector2.zero;
|
40
|
+
}
|
41
|
+
}
|
42
|
+
|
43
|
+
|
44
|
+
/// 移動処理
|
24
45
|
private void MoveUpdate(Vector3 vec)
|
25
46
|
{
|
26
47
|
var cameraForward = Vector3.Scale(cameraTransform.forward, new Vector3(1, 0, 1)).normalized;
|
@@ -40,6 +61,50 @@
|
|
40
61
|
characterController.Move(playerForward * moveSpeed);
|
41
62
|
}
|
42
63
|
|
64
|
+
/// カメラ入力
|
65
|
+
private void MouseCameraInput()
|
66
|
+
{
|
67
|
+
IsTap = false;
|
68
|
+
|
69
|
+
if (Input.GetMouseButtonUp(0))
|
70
|
+
{
|
71
|
+
mousePos = Vector2.zero;
|
72
|
+
|
73
|
+
if (isDraging)
|
74
|
+
{
|
75
|
+
isDraging = false;
|
76
|
+
}
|
77
|
+
else
|
78
|
+
{
|
79
|
+
IsTap = true;
|
80
|
+
return;
|
81
|
+
}
|
82
|
+
}
|
83
|
+
|
84
|
+
if (Input.GetMouseButtonDown(0))
|
85
|
+
{
|
86
|
+
downMousePos = Input.mousePosition;
|
87
|
+
downDistance = 0.0f;
|
88
|
+
}
|
89
|
+
|
90
|
+
if (Input.GetMouseButton(0))
|
91
|
+
{
|
92
|
+
mousePos = Input.mousePosition;
|
93
|
+
downDistance = (mousePos - downMousePos).magnitude;
|
94
|
+
|
95
|
+
if (downDistance >= dragingDistance)
|
96
|
+
{
|
97
|
+
if (!isDraging)
|
98
|
+
{
|
99
|
+
OnCameraBegin(mousePos);
|
100
|
+
isDraging = true;
|
101
|
+
}
|
102
|
+
|
103
|
+
OnCameraMove(mousePos);
|
104
|
+
}
|
105
|
+
}
|
106
|
+
|
107
|
+
/// カメラ処理
|
43
108
|
private void OnCameraMove(Vector2 pos)
|
44
109
|
{
|
45
110
|
var currLookPos = pos;
|
1
補足
test
CHANGED
File without changes
|
test
CHANGED
@@ -8,9 +8,13 @@
|
|
8
8
|
TPSカメラでキャラクター周りを回転します。
|
9
9
|
キャラクター自身の移動方向は、カメラの正面方向に合わせて前進し、横に移動するときはキャラクターのみ横向きに回転します。
|
10
10
|
|
11
|
+
カメラはキャラクターの子オブジェクトにしています。
|
12
|
+
|
13
|
+
|
11
14
|
上記を実装したところ、カメラを左右に回転させたときにキャラクターの移動が速くなっているように見えました。
|
15
|
+
|
16
|
+
どこの処理が間違っているのか
|
12
17
|
原因がわからず、今回質問をさせて頂きました。
|
13
|
-
|
14
18
|
何卒、よろしくお願いいたします。
|
15
19
|
|
16
20
|
|