From cf77804e5e2f7c91373e93ac6b3c80fcb4c92ed2 Mon Sep 17 00:00:00 2001 From: Brulijam Date: Tue, 28 Nov 2023 18:40:46 +0100 Subject: [PATCH] Move in view direction when pressing 'w' --- Abgabe_3/main.js | 54 ++++++++++++++++++++++++++++++++++-------------- 1 file changed, 38 insertions(+), 16 deletions(-) diff --git a/Abgabe_3/main.js b/Abgabe_3/main.js index fe53577..9ec8ede 100644 --- a/Abgabe_3/main.js +++ b/Abgabe_3/main.js @@ -84,24 +84,46 @@ function main() { function move(e) { - if (e.keyCode == '87') //w - { - eye[2] = eye[2] - 0.5; - target[2] = target[2] - 0.5; - } else if (e.keyCode == '83') //s - { - eye[2] = eye[2] + 0.5; - target[2] = target[2] + 0.5; - } else if (e.keyCode == '65') //a - { - eye[0] = eye[0] - 0.5; - target[0] = target[0] - 0.5; - } else if (e.keyCode == '68') //d - { - eye[0] = eye[0] + 0.5; - target[0] = target[0] + 0.5; + if (false) { + if (e.keyCode == '87') //w + { + eye[2] = eye[2] - 0.5; + target[2] = target[2] - 0.5; + } else if (e.keyCode == '83') //s + { + eye[2] = eye[2] + 0.5; + target[2] = target[2] + 0.5; + } else if (e.keyCode == '65') //a + { + eye[0] = eye[0] - 0.5; + target[0] = target[0] - 0.5; + } else if (e.keyCode == '68') //d + { + eye[0] = eye[0] + 0.5; + target[0] = target[0] + 0.5; + } + } + + if (true) { + let distance = Math.sqrt((target[0]-eye[0])**2 + (target[2]-eye[2])**2) + let moveX = ((target[0]-eye[0])/distance)/2; + let moveZ = ((target[2]-eye[2])/distance)/2; + + if (e.keyCode == "87") { // w + eye[0] = eye[0] + moveX; + eye[2] = eye[2] + moveZ; + target[0] = target[0] + moveX; + target[2] = target[2] + moveZ; + } else if (e.keyCode == "65") { // a + console.log("key not implemented") + } else if (e.keyCode == "83") { // s + console.log("key not implemented") + } else if (e.keyCode == "68") { // d + console.log("key not implemented") + } } + console.log(eye[0], eye[2]); //set the viewMatrix const viewLoc = gl.getUniformLocation(program, "viewMatrix"); mat4.lookAt(viewMatrix, eye, target, up);