質問編集履歴

3

文の修正

2018/05/20 12:22

投稿

Astin
Astin

スコア14

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) - transform.rotation * Vector3.forward * distance;
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

修整依頼による修正

2018/05/20 12:22

投稿

Astin
Astin

スコア14

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
- ![イメージ説明](ab49ed0b482b6a4174e73c724e69df80.png)
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
- ![イメージ説明](8b54167f0b23d267cc67ebba2967d3fc.png)
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

文法の修正

2018/05/20 12:00

投稿

Astin
Astin

スコア14

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