improve position fixing
This commit is contained in:
+46
-1
@@ -43,6 +43,7 @@ global.renderer = renderer
|
||||
global.camera = camera
|
||||
global.scene = scene
|
||||
|
||||
|
||||
const keysDown = {}
|
||||
|
||||
function render() {
|
||||
@@ -54,8 +55,52 @@ function minimapRender() {
|
||||
minimapRenderer.render(scene, minimapCamera)
|
||||
}
|
||||
|
||||
const cameraSpeed = 0.1
|
||||
var cameraLocked = true
|
||||
function followCamera() {
|
||||
// entity = entities.filter((e) => e.id = '1').at(0)
|
||||
const entity = entities['1']
|
||||
if (entity == null) { return }
|
||||
|
||||
const offsetX = 0
|
||||
const offsetY = -15
|
||||
|
||||
const distanceX = Math.abs((entity.position.x + offsetX) - camera.position.x)
|
||||
const distanceY = Math.abs((entity.position.y + offsetY) - camera.position.y)
|
||||
|
||||
if (distanceX > 0.01) {
|
||||
if (entity.position.x + offsetX > camera.position.x) {
|
||||
camera.position.x += cameraSpeed * distanceX
|
||||
}
|
||||
if (entity.position.x + offsetX < camera.position.x) {
|
||||
camera.position.x -= cameraSpeed * distanceX
|
||||
}
|
||||
}
|
||||
else if (distanceX != 0) {
|
||||
camera.position.x = entity.position.x + offsetX
|
||||
}
|
||||
|
||||
if (distanceY > 0.01) {
|
||||
if (entity.position.y + offsetY > camera.position.y) {
|
||||
camera.position.y += cameraSpeed * distanceY
|
||||
}
|
||||
if (entity.position.y + offsetY < camera.position.y) {
|
||||
camera.position.y -= cameraSpeed * distanceY
|
||||
}
|
||||
}
|
||||
else if (distanceY != 0) {
|
||||
camera.position.y = entity.position.y + offsetY
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
|
||||
const cameraSpeed = 0.03
|
||||
function cameraMovement() {
|
||||
if (cameraLocked) {
|
||||
followCamera()
|
||||
return
|
||||
}
|
||||
|
||||
if (keysDown.ArrowLeft) { camera.position.x -= cameraSpeed }
|
||||
else if (keysDown.ArrowRight) { camera.position.x += cameraSpeed }
|
||||
|
||||
|
||||
Reference in New Issue
Block a user