Просмотр исходного кода

more logical, half-parallel movement of the camera.

as in, pressing multiple keys works. more or less, there is a short stop
when you press an additional key.
Lucas Stadler лет назад: 12
Родитель
Сommit
3f4f57a221
1 измененных файлов с 23 добавлено и 13 удалено
  1. 23 13
      js/pixl/public/trixl.html

+ 23 - 13
js/pixl/public/trixl.html

@ -189,30 +189,40 @@
189 189
190 190
		trixl.start();
191 191
192
		trixl.input = {};
193
		trixl.input.keys = new Set();
192 194
		document.addEventListener("keydown", function(ev) {
193
			switch (ev.keyCode) {
194
			case 32:
195
			trixl.input.keys.add(ev.keyCode);
196
			var isPressed = function(keyCode) {
197
				return trixl.input.keys.has(keyCode);
198
			}
199
200
			if (isPressed(32)) { // space
195 201
				if (trixl.step.reqId == null) {
196 202
					trixl.start();
197 203
				} else {
198 204
					trixl.stop();
199 205
				}
200
				break;
201
			case 37: // left
202
				trixl.pos.x -= 0.1;
203
				break;
204
			case 38: // up
205
				trixl.pos.z -= 0.1;
206
				break;
207
			case 39: // right
206
			}
207
208
			if (isPressed(37)) {
208 209
				trixl.pos.x += 0.1;
209
				break;
210
			case 40: // down
210
			}
211
			if (isPressed(38)) {
212
				trixl.pos.z -= 0.1;
213
			}
214
			if (isPressed(39)) {
215
				trixl.pos.x -= 0.1;
216
			}
217
			if (isPressed(40)) {
211 218
				trixl.pos.z += 0.1;
212
				break;
213 219
			}
214 220
		});
215 221
222
		document.addEventListener("keyup", function(ev) {
223
			trixl.input.keys.delete(ev.keyCode);
224
		});
225
216 226
		window.onresize = function() {
217 227
			trixl.window.w = window.innerWidth;
218 228
			trixl.window.h = window.innerHeight;