質問編集履歴
3
文の修正
test
CHANGED
File without changes
|
test
CHANGED
@@ -18,23 +18,23 @@
|
|
18
18
|
|
19
19
|
|
20
20
|
|
21
|
-
|
21
|
+
```ここに言語を入力
|
22
22
|
|
23
|
-
using System.Collections;
|
23
|
+
using System.Collections;
|
24
24
|
|
25
|
-
using System.Collections.Generic;
|
25
|
+
using System.Collections.Generic;
|
26
26
|
|
27
|
-
using UnityEngine;
|
27
|
+
using UnityEngine;
|
28
28
|
|
29
|
-
using UnityEngine.UI;
|
29
|
+
using UnityEngine.UI;
|
30
30
|
|
31
31
|
|
32
32
|
|
33
|
-
/* プレイヤー追従カメラ */
|
33
|
+
/* プレイヤー追従カメラ */
|
34
34
|
|
35
|
-
public class PlayerFollowCamera : MonoBehaviour
|
35
|
+
public class PlayerFollowCamera : MonoBehaviour
|
36
36
|
|
37
|
-
{
|
37
|
+
{
|
38
38
|
|
39
39
|
[SerializeField] private float trunSpeed = 10.0f; //回転速度
|
40
40
|
|
@@ -52,9 +52,9 @@
|
|
52
52
|
|
53
53
|
|
54
54
|
|
55
|
-
private GameObject playerObj; //プレイヤー
|
55
|
+
private GameObject playerObj; //プレイヤー
|
56
56
|
|
57
|
-
private Player player_Script; //プレイヤーのモード
|
57
|
+
private Player player_Script; //プレイヤーのモード
|
58
58
|
|
59
59
|
Vector3 PlayerPos; //プレイヤーの位置
|
60
60
|
|
@@ -72,11 +72,11 @@
|
|
72
72
|
|
73
73
|
|
74
74
|
|
75
|
-
void Start()
|
75
|
+
void Start()
|
76
76
|
|
77
|
-
{
|
77
|
+
{
|
78
78
|
|
79
|
-
//回転の初期化
|
79
|
+
//回転の初期化
|
80
80
|
|
81
81
|
vRotation = Quaternion.Euler(30, 0, 0); //垂直回転(x軸を軸とする回転)は30度見下ろす回転
|
82
82
|
|
@@ -86,7 +86,7 @@
|
|
86
86
|
|
87
87
|
|
88
88
|
|
89
|
-
/* プレイヤーを見つける */
|
89
|
+
/* プレイヤーを見つける */
|
90
90
|
|
91
91
|
playerObj = GameObject.FindGameObjectWithTag("Player");
|
92
92
|
|
@@ -94,13 +94,13 @@
|
|
94
94
|
|
95
95
|
|
96
96
|
|
97
|
-
/* プレイヤーの位置 */
|
97
|
+
/* プレイヤーの位置 */
|
98
98
|
|
99
99
|
PlayerPos = player.transform.position;
|
100
100
|
|
101
101
|
|
102
102
|
|
103
|
-
/* カメラ */
|
103
|
+
/* カメラ */
|
104
104
|
|
105
105
|
camera = GetComponent<Camera>();
|
106
106
|
|
@@ -142,25 +142,25 @@
|
|
142
142
|
|
143
143
|
|
144
144
|
|
145
|
-
//カメラの位置(transform.position)の更新
|
145
|
+
//カメラの位置(transform.position)の更新
|
146
146
|
|
147
147
|
//Playerの位置から距離distanceだけ手前に引いた位置を指定する
|
148
148
|
|
149
149
|
/* おそらくここを変えればズームアウト/ズームインができると思うのですが…。 */
|
150
150
|
|
151
|
-
transform.position = player.position + new Vector3(0, 2, 0)
|
151
|
+
transform.position = player.position + new Vector3(0, 2, 0) - transform.rotation * Vector3.forward * distance;
|
152
152
|
|
153
153
|
|
154
154
|
|
155
155
|
|
156
156
|
|
157
|
-
/* マウスホイール スクロール向きによって正負が変化 何もしなければ0 */
|
157
|
+
/* マウスホイール スクロール向きによって正負が変化 何もしなければ0 */
|
158
158
|
|
159
|
-
scroll = Input.GetAxis("Mouse ScrollWheel");
|
159
|
+
scroll = Input.GetAxis("Mouse ScrollWheel");
|
160
160
|
|
161
|
-
/* ズームイン/ズームアウト fieldOfView:値を小さくすると視野が狭くなる */
|
161
|
+
/* ズームイン/ズームアウト fieldOfView:値を小さくすると視野が狭くなる */
|
162
162
|
|
163
|
-
//transform.Translate(0, 0, Input.GetAxis("Mouse ScrollWheel"));
|
163
|
+
//transform.Translate(0, 0, Input.GetAxis("Mouse ScrollWheel"));
|
164
164
|
|
165
165
|
view = camera.fieldOfView - scroll;
|
166
166
|
|
@@ -172,7 +172,7 @@
|
|
172
172
|
|
173
173
|
|
174
174
|
|
175
|
-
}
|
175
|
+
}
|
176
176
|
|
177
177
|
}
|
178
178
|
|
2
修整依頼による修正
test
CHANGED
File without changes
|
test
CHANGED
@@ -10,10 +10,172 @@
|
|
10
10
|
|
11
11
|
|
12
12
|
|
13
|
-
スクリプトが長いので画像で載せておきます。
|
14
|
-
|
15
13
|
言語はUnity(2017.4.1)のC#で書いています。
|
16
14
|
|
17
|
-

|
18
15
|
|
16
|
+
|
17
|
+
ありがとうございます。↓がコードになります
|
18
|
+
|
19
|
+
|
20
|
+
|
21
|
+
> 引用テキスト```
|
22
|
+
|
23
|
+
using System.Collections;
|
24
|
+
|
25
|
+
using System.Collections.Generic;
|
26
|
+
|
27
|
+
using UnityEngine;
|
28
|
+
|
29
|
+
using UnityEngine.UI;
|
30
|
+
|
31
|
+
|
32
|
+
|
33
|
+
/* プレイヤー追従カメラ */
|
34
|
+
|
19
|
-
|
35
|
+
public class PlayerFollowCamera : MonoBehaviour
|
36
|
+
|
37
|
+
{
|
38
|
+
|
39
|
+
[SerializeField] private float trunSpeed = 10.0f; //回転速度
|
40
|
+
|
41
|
+
[SerializeField] private Transform player; //注視対象プレイヤー
|
42
|
+
|
43
|
+
|
44
|
+
|
45
|
+
[SerializeField] private float distance = 10.0f; //注視対象プレイヤーからカメラとの距離
|
46
|
+
|
47
|
+
[SerializeField] private Quaternion vRotation; //カメラの垂直方向(見下ろし回転)
|
48
|
+
|
49
|
+
[SerializeField] public Quaternion hRotation; //カメラの水平回転
|
50
|
+
|
51
|
+
|
52
|
+
|
53
|
+
|
54
|
+
|
55
|
+
private GameObject playerObj; //プレイヤー
|
56
|
+
|
57
|
+
private Player player_Script; //プレイヤーのモード
|
58
|
+
|
59
|
+
Vector3 PlayerPos; //プレイヤーの位置
|
60
|
+
|
61
|
+
|
62
|
+
|
63
|
+
private Camera camera; //カメラ
|
64
|
+
|
65
|
+
|
66
|
+
|
67
|
+
float scroll;
|
68
|
+
|
69
|
+
float view;
|
70
|
+
|
71
|
+
|
72
|
+
|
73
|
+
|
74
|
+
|
75
|
+
void Start()
|
76
|
+
|
77
|
+
{
|
78
|
+
|
79
|
+
//回転の初期化
|
80
|
+
|
81
|
+
vRotation = Quaternion.Euler(30, 0, 0); //垂直回転(x軸を軸とする回転)は30度見下ろす回転
|
82
|
+
|
83
|
+
hRotation = Quaternion.identity; //水平回転(y軸を軸とする回転)は無回転
|
84
|
+
|
85
|
+
transform.rotation = hRotation * vRotation; //最終的なカメラの回転は垂直回転してから水平回転する合成回転
|
86
|
+
|
87
|
+
|
88
|
+
|
89
|
+
/* プレイヤーを見つける */
|
90
|
+
|
91
|
+
playerObj = GameObject.FindGameObjectWithTag("Player");
|
92
|
+
|
93
|
+
player_Script = playerObj.GetComponent<Player>();
|
94
|
+
|
95
|
+
|
96
|
+
|
97
|
+
/* プレイヤーの位置 */
|
98
|
+
|
99
|
+
PlayerPos = player.transform.position;
|
100
|
+
|
101
|
+
|
102
|
+
|
103
|
+
/* カメラ */
|
104
|
+
|
105
|
+
camera = GetComponent<Camera>();
|
106
|
+
|
107
|
+
|
108
|
+
|
109
|
+
//位置の初期化
|
110
|
+
|
111
|
+
//Playerの位置から距離distanceだけ手前に引いた位置を設定
|
112
|
+
|
113
|
+
transform.position = player.position - transform.rotation * Vector3.forward * distance;
|
114
|
+
|
115
|
+
}
|
116
|
+
|
117
|
+
|
118
|
+
|
119
|
+
void LateUpdate()
|
120
|
+
|
121
|
+
{
|
122
|
+
|
123
|
+
//Playerの移動量分カメラも移動
|
124
|
+
|
125
|
+
transform.position += player.transform.position - PlayerPos;
|
126
|
+
|
127
|
+
PlayerPos = player.transform.position;
|
128
|
+
|
129
|
+
|
130
|
+
|
131
|
+
hRotation *= Quaternion.Euler(0, Input.GetAxis("Mouse X") * trunSpeed, 0);
|
132
|
+
|
133
|
+
vRotation *= Quaternion.Euler(-Input.GetAxis("Mouse Y") * trunSpeed, 0, 0);
|
134
|
+
|
135
|
+
|
136
|
+
|
137
|
+
//カメラの回転(transform.rotation)に更新
|
138
|
+
|
139
|
+
//垂直回転して型水平回転する合成回転
|
140
|
+
|
141
|
+
transform.rotation = hRotation * vRotation;
|
142
|
+
|
143
|
+
|
144
|
+
|
145
|
+
//カメラの位置(transform.position)の更新
|
146
|
+
|
147
|
+
//Playerの位置から距離distanceだけ手前に引いた位置を指定する
|
148
|
+
|
149
|
+
/* おそらくここを変えればズームアウト/ズームインができると思うのですが…。 */
|
150
|
+
|
151
|
+
transform.position = player.position + new Vector3(0, 2, 0) - transform.rotation * Vector3.forward * distance;
|
152
|
+
|
153
|
+
|
154
|
+
|
155
|
+
|
156
|
+
|
157
|
+
/* マウスホイール スクロール向きによって正負が変化 何もしなければ0 */
|
158
|
+
|
159
|
+
scroll = Input.GetAxis("Mouse ScrollWheel");
|
160
|
+
|
161
|
+
/* ズームイン/ズームアウト fieldOfView:値を小さくすると視野が狭くなる */
|
162
|
+
|
163
|
+
//transform.Translate(0, 0, Input.GetAxis("Mouse ScrollWheel"));
|
164
|
+
|
165
|
+
view = camera.fieldOfView - scroll;
|
166
|
+
|
167
|
+
|
168
|
+
|
169
|
+
/* 第一引数で受け取った値が第二・第三引数の範囲を超えないように値を返す */
|
170
|
+
|
171
|
+
camera.fieldOfView = Mathf.Clamp(value: view, min: 0.1f, max: 45f);
|
172
|
+
|
173
|
+
|
174
|
+
|
175
|
+
}
|
176
|
+
|
177
|
+
}
|
178
|
+
|
179
|
+
|
180
|
+
|
181
|
+
```
|
1
文法の修正
test
CHANGED
File without changes
|
test
CHANGED
@@ -1,8 +1,12 @@
|
|
1
1
|
マウスのホイールでキャラを中心にしたままズームイン、ズームアウトをさせたいのですが、
|
2
2
|
|
3
|
-
|
3
|
+
思うようにできません。
|
4
4
|
|
5
|
-
|
5
|
+
65行目でカメラの位置指定をしているせいだと思うのですがどのように書き直したらいいのかがわかりません。
|
6
|
+
|
7
|
+
|
8
|
+
|
9
|
+
よろしくお願いします。
|
6
10
|
|
7
11
|
|
8
12
|
|