add camera movement
This commit is contained in:
+22
-4
@@ -13,12 +13,12 @@ camera.rotation.set((60 / 180) * Math.PI, 0, 0)
|
|||||||
const entityMaterial = new THREE.MeshToonMaterial({ color: 0xffffff })
|
const entityMaterial = new THREE.MeshToonMaterial({ color: 0xffffff })
|
||||||
const terrainMaterial = new THREE.MeshToonMaterial({ color: 0xffd700 })
|
const terrainMaterial = new THREE.MeshToonMaterial({ color: 0xffd700 })
|
||||||
|
|
||||||
const minimapCamera = new THREE.OrthographicCamera(-5, 5, 5, -5)
|
const minimapCamera = new THREE.OrthographicCamera(-10, 10, 10, -10)
|
||||||
const minimapRenderer = new THREE.WebGLRenderer()
|
const minimapRenderer = new THREE.WebGLRenderer()
|
||||||
|
|
||||||
minimapRenderer.setSize(300, 300)
|
minimapRenderer.setSize(300, 300)
|
||||||
minimapRenderer.setAnimationLoop(minimapRender)
|
minimapRenderer.setAnimationLoop(minimapRender)
|
||||||
minimapCamera.position.set(5, 5, 10)
|
minimapCamera.position.set(10, 10, 10)
|
||||||
|
|
||||||
const entities = {}
|
const entities = {}
|
||||||
const terrains = {}
|
const terrains = {}
|
||||||
@@ -41,7 +41,10 @@ global.renderer = renderer
|
|||||||
global.camera = camera
|
global.camera = camera
|
||||||
global.scene = scene
|
global.scene = scene
|
||||||
|
|
||||||
|
const keysDown = {}
|
||||||
|
|
||||||
function render() {
|
function render() {
|
||||||
|
cameraMovement()
|
||||||
renderer.render(scene, camera)
|
renderer.render(scene, camera)
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -49,6 +52,19 @@ function minimapRender() {
|
|||||||
minimapRenderer.render(scene, minimapCamera)
|
minimapRenderer.render(scene, minimapCamera)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
const cameraSpeed = 0.1
|
||||||
|
function cameraMovement() {
|
||||||
|
if (keysDown.ArrowLeft) { camera.position.x -= cameraSpeed }
|
||||||
|
else if (keysDown.ArrowRight) { camera.position.x += cameraSpeed }
|
||||||
|
|
||||||
|
if (keysDown.ArrowUp) { camera.position.y += cameraSpeed }
|
||||||
|
else if (keysDown.ArrowDown) { camera.position.y -= cameraSpeed }
|
||||||
|
|
||||||
|
if (keysDown.Space) {
|
||||||
|
camera.position.set(entities['1'].position.x, entities['1'].position.y - 17, 10)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
var websocket = null
|
var websocket = null
|
||||||
global.websocket = null
|
global.websocket = null
|
||||||
var timerId = null
|
var timerId = null
|
||||||
@@ -160,13 +176,15 @@ window.addEventListener('load', () => {
|
|||||||
}
|
}
|
||||||
})
|
})
|
||||||
|
|
||||||
window.addEventListener("resize", (event) => {
|
window.addEventListener('resize', (event) => {
|
||||||
camera.aspect = window.innerWidth / window.innerHeight
|
camera.aspect = window.innerWidth / window.innerHeight
|
||||||
camera.updateProjectionMatrix()
|
camera.updateProjectionMatrix()
|
||||||
renderer.setSize(window.innerWidth, window.innerHeight)
|
renderer.setSize(window.innerWidth, window.innerHeight)
|
||||||
})
|
})
|
||||||
|
|
||||||
document.addEventListener("contextmenu", (event) => event.preventDefault())
|
document.addEventListener('contextmenu', (event) => event.preventDefault())
|
||||||
|
window.addEventListener('keydown', (event) => keysDown[event.code] = true)
|
||||||
|
window.addEventListener('keyup', (event) => keysDown[event.code] = false)
|
||||||
|
|
||||||
document.body.appendChild(canvas)
|
document.body.appendChild(canvas)
|
||||||
|
|
||||||
|
|||||||
@@ -26,6 +26,7 @@
|
|||||||
}
|
}
|
||||||
|
|
||||||
.debug-panel {
|
.debug-panel {
|
||||||
|
display: none;
|
||||||
position: fixed;
|
position: fixed;
|
||||||
opacity: 0.2;
|
opacity: 0.2;
|
||||||
inset: 0 0 auto auto;
|
inset: 0 0 auto auto;
|
||||||
|
|||||||
+2
-2
@@ -3,8 +3,8 @@ import { EventEmitter } from 'node:events'
|
|||||||
export default class Game {
|
export default class Game {
|
||||||
tickRate = 30
|
tickRate = 30
|
||||||
currentTick = 0
|
currentTick = 0
|
||||||
width = 1000
|
width = 4000
|
||||||
height = 1000
|
height = 4000
|
||||||
|
|
||||||
#entities = []
|
#entities = []
|
||||||
#eventEmitter = new EventEmitter()
|
#eventEmitter = new EventEmitter()
|
||||||
|
|||||||
+9
-4
@@ -48,15 +48,20 @@ app.listen(port, () => {
|
|||||||
|
|
||||||
const entity2 = new Entity()
|
const entity2 = new Entity()
|
||||||
entity2.id = '2'
|
entity2.id = '2'
|
||||||
entity2.teleport(800, 100)
|
entity2.teleport(35, 35)
|
||||||
entity2.radius = 35
|
entity2.radius = 35
|
||||||
game.spawn_entity(entity2)
|
game.spawn_entity(entity2)
|
||||||
|
|
||||||
const vertices = [
|
const vertices = [
|
||||||
{ x: 400, y: 400 },
|
{ x: 400, y: 200 },
|
||||||
{ x: 600, y: 400 },
|
{ x: 600, y: 200 },
|
||||||
{ x: 600, y: 600 },
|
{ x: 700, y: 300 },
|
||||||
|
{ x: 650, y: 600 },
|
||||||
{ x: 400, y: 600 },
|
{ x: 400, y: 600 },
|
||||||
|
{ x: 400, y: 450 },
|
||||||
|
{ x: 600, y: 500 },
|
||||||
|
{ x: 600, y: 300 },
|
||||||
|
{ x: 400, y: 300 },
|
||||||
]
|
]
|
||||||
|
|
||||||
const terrain1 = new Terrain(vertices)
|
const terrain1 = new Terrain(vertices)
|
||||||
|
|||||||
Reference in New Issue
Block a user