質問編集履歴
5
コメントがおかしかったです
test
CHANGED
File without changes
|
test
CHANGED
@@ -158,13 +158,13 @@
|
|
158
158
|
|
159
159
|
document.addEventListener("mousemove",function(event){
|
160
160
|
|
161
|
-
const movementX = event.movementX || 0;//マウス
|
161
|
+
const movementX = event.movementX || 0;//マウス移動量X の取得 || はどちらかが True
|
162
|
-
|
162
|
+
|
163
|
-
// || 0 はたぶんマウスが動かなくなったら movementX = 0になる
|
163
|
+
// || 0 はたぶんマウスが動かなくなったら movementX = 0になる
|
164
|
-
|
164
|
+
|
165
|
-
// ↑↑マウスが動かないときでも 0 じゃなかったら 次にマウスを動かした際 視点の変化量が前の値になっ
|
165
|
+
// ↑↑マウスが動かないときでも 0 じゃなかったら 次にマウスを動かした際 視点の変化量が前の値になったままなので 急に動いておかしくなる
|
166
|
-
|
166
|
+
|
167
|
-
const movementY = event.movementY || 0;//マウス
|
167
|
+
const movementY = event.movementY || 0;//マウス移動量Y の取得
|
168
168
|
|
169
169
|
|
170
170
|
|
@@ -172,7 +172,7 @@
|
|
172
172
|
|
173
173
|
|
174
174
|
|
175
|
-
_euler.y -= movementX * MouseSensitivity;//マウス
|
175
|
+
_euler.y -= movementX * MouseSensitivity;//マウスの移動量に応じて 視点の変化量を決める
|
176
176
|
|
177
177
|
_euler.x -= movementY * MouseSensitivity;//
|
178
178
|
|
4
タイトルを訂正しました
test
CHANGED
@@ -1 +1 @@
|
|
1
|
-
|
1
|
+
FPSの視点移動はなぜカーソルが画面端までいって止まることがないのですか?
|
test
CHANGED
File without changes
|
3
質問を少し付け加えました
test
CHANGED
@@ -1 +1 @@
|
|
1
|
-
マウスの視点移動で画面端で
|
1
|
+
マウスの視点移動で画面端でカーソルが引っかからないようにしたいです
|
test
CHANGED
@@ -2,6 +2,8 @@
|
|
2
2
|
|
3
3
|
マウスが**画面端まで行くとマウスが画面端に引っ掛かり、視点移動が止まってしまいます**。
|
4
4
|
|
5
|
+
なぜFPSゲームなどの視点移動は画面端までカーソルが動くことによってそれ以上視点が動かせなくならないのですか?
|
6
|
+
|
5
7
|
マウスの視点移動で画面端でマウスが引っかからないようにするにはどうすれば良いですか?
|
6
8
|
|
7
9
|
また画面外でもマウスの座標を取得できたりしませんか?
|
2
コードの解説などを改善しました
test
CHANGED
File without changes
|
test
CHANGED
@@ -24,7 +24,7 @@
|
|
24
24
|
|
25
25
|
</canvas>
|
26
26
|
|
27
|
-
|
27
|
+
|
28
28
|
|
29
29
|
<!--Three.jsファイルロード-->
|
30
30
|
|
@@ -32,7 +32,7 @@
|
|
32
32
|
|
33
33
|
</script>
|
34
34
|
|
35
|
-
|
35
|
+
|
36
36
|
|
37
37
|
<script>
|
38
38
|
|
@@ -58,9 +58,9 @@
|
|
58
58
|
|
59
59
|
window.addEventListener("resize",function(event){
|
60
60
|
|
61
|
-
width = window.innerWidth
|
61
|
+
width = window.innerWidth//タブ領域を含まないウィンドウサイズ
|
62
|
-
|
62
|
+
|
63
|
-
height = window.innerHeight
|
63
|
+
height = window.innerHeight//
|
64
64
|
|
65
65
|
renderer.setSize(width,height)
|
66
66
|
|
@@ -76,13 +76,13 @@
|
|
76
76
|
|
77
77
|
renderer.setSize(width,height)
|
78
78
|
|
79
|
-
|
79
|
+
|
80
80
|
|
81
81
|
var scene=new THREE.Scene()
|
82
82
|
|
83
|
-
|
84
|
-
|
83
|
+
|
84
|
+
|
85
|
-
var camera=new THREE.PerspectiveCamera(45,width/height)
|
85
|
+
var camera=new THREE.PerspectiveCamera(45,width/height)//視野角,アスペクト比
|
86
86
|
|
87
87
|
camera.position.set(0,0,0)
|
88
88
|
|
@@ -90,11 +90,11 @@
|
|
90
90
|
|
91
91
|
|
92
92
|
|
93
|
-
|
94
|
-
|
93
|
+
|
94
|
+
|
95
|
-
const box0 = new THREE.Mesh(
|
95
|
+
const box0 = new THREE.Mesh(//青色の箱
|
96
|
-
|
96
|
+
|
97
|
-
new THREE.BoxGeometry(1,1,1),//
|
97
|
+
new THREE.BoxGeometry(1,1,1),//箱の大きさ
|
98
98
|
|
99
99
|
new THREE.MeshBasicMaterial({color:"blue"})
|
100
100
|
|
@@ -104,11 +104,11 @@
|
|
104
104
|
|
105
105
|
scene.add(box0)
|
106
106
|
|
107
|
-
|
108
|
-
|
107
|
+
|
108
|
+
|
109
|
-
var box1=new THREE.Mesh(//
|
109
|
+
var box1=new THREE.Mesh(//赤色の箱
|
110
|
-
|
110
|
+
|
111
|
-
new THREE.BoxGeometry(1,1,1),
|
111
|
+
new THREE.BoxGeometry(1,1,1),//箱の大きさ
|
112
112
|
|
113
113
|
new THREE.MeshBasicMaterial({color:"red"})
|
114
114
|
|
@@ -120,9 +120,9 @@
|
|
120
120
|
|
121
121
|
|
122
122
|
|
123
|
-
var box2=new THREE.Mesh(
|
123
|
+
var box2=new THREE.Mesh(//オレンジの箱
|
124
|
-
|
124
|
+
|
125
|
-
new THREE.BoxGeometry(1,1,1),
|
125
|
+
new THREE.BoxGeometry(1,1,1),//箱の大きさ
|
126
126
|
|
127
127
|
new THREE.MeshBasicMaterial({color:"orange"})
|
128
128
|
|
@@ -134,9 +134,9 @@
|
|
134
134
|
|
135
135
|
|
136
136
|
|
137
|
-
var box3=new THREE.Mesh(
|
137
|
+
var box3=new THREE.Mesh(//緑の箱
|
138
|
-
|
138
|
+
|
139
|
-
new THREE.BoxGeometry(1,1,1),
|
139
|
+
new THREE.BoxGeometry(1,1,1),//箱の大きさ
|
140
140
|
|
141
141
|
new THREE.MeshBasicMaterial({color:"green"})
|
142
142
|
|
@@ -160,9 +160,7 @@
|
|
160
160
|
|
161
161
|
// || 0 はたぶんマウスが動かなくなったら movementX = 0になるたぶん
|
162
162
|
|
163
|
-
// マウスが動かないときでも 0 じゃなかったら 次動か
|
163
|
+
// ↑↑マウスが動かないときでも 0 じゃなかったら 次にマウスを動かした際 視点の変化量が前の値になっているので 急に動いておかしくなる
|
164
|
-
|
165
|
-
//movementXをconsole.log()で出力してみるとわかりやすい
|
166
164
|
|
167
165
|
const movementY = event.movementY || 0;//マウス座標Y の取得
|
168
166
|
|
@@ -172,7 +170,7 @@
|
|
172
170
|
|
173
171
|
|
174
172
|
|
175
|
-
_euler.y -= movementX * MouseSensitivity;//マウス座標に応じて 変化量を決める
|
173
|
+
_euler.y -= movementX * MouseSensitivity;//マウス座標に応じて 視点の変化量を決める
|
176
174
|
|
177
175
|
_euler.x -= movementY * MouseSensitivity;//
|
178
176
|
|
@@ -180,9 +178,9 @@
|
|
180
178
|
|
181
179
|
_euler.x = Math.max( Math.PI/2 - Math.PI, Math.min( Math.PI/2 - 0, _euler.x ) );
|
182
180
|
|
183
|
-
camera.quaternion.setFromEuler( _euler );//cameraのquaternionにオイラー角適応たぶん
|
181
|
+
camera.quaternion.setFromEuler( _euler );//cameraのquaternionにオイラー角適応たぶん
|
184
|
-
|
185
|
-
|
182
|
+
|
183
|
+
|
186
184
|
|
187
185
|
//↑↑----------------------------------------------------------------------------
|
188
186
|
|
@@ -192,21 +190,11 @@
|
|
192
190
|
|
193
191
|
|
194
192
|
|
195
|
-
context.font="40px HGRE"
|
196
|
-
|
197
|
-
context.fillStyle = "white"
|
198
|
-
|
199
193
|
function animation(){
|
200
194
|
|
201
195
|
renderer.render(scene,camera)//レンダリング
|
202
196
|
|
203
|
-
requestAnimationFrame(animation)
|
197
|
+
requestAnimationFrame(animation)//ブラウザの更新毎で実行する
|
204
|
-
|
205
|
-
|
206
|
-
|
207
|
-
|
208
|
-
|
209
|
-
|
210
198
|
|
211
199
|
}
|
212
200
|
|
@@ -216,7 +204,7 @@
|
|
216
204
|
|
217
205
|
</body>
|
218
206
|
|
219
|
-
|
207
|
+
|
220
208
|
|
221
209
|
</html>
|
222
210
|
|
1
不要なコードの削除
test
CHANGED
File without changes
|
test
CHANGED
@@ -42,10 +42,6 @@
|
|
42
42
|
|
43
43
|
var height = window.innerHeight
|
44
44
|
|
45
|
-
var space = false
|
46
|
-
|
47
|
-
var speed = 0.01//回転速度
|
48
|
-
|
49
45
|
var canvas = document.getElementById("UI")
|
50
46
|
|
51
47
|
var context = canvas.getContext("2d")
|
@@ -96,7 +92,7 @@
|
|
96
92
|
|
97
93
|
|
98
94
|
|
99
|
-
const box0 = new THREE.Mesh(
|
95
|
+
const box0 = new THREE.Mesh(
|
100
96
|
|
101
97
|
new THREE.BoxGeometry(1,1,1),//,がいる 箱の大きさ
|
102
98
|
|