mirror of
https://git.leinelab.org/Mal/mr-crocs-adventures.git
synced 2025-09-11 02:57:36 +02:00
Camera implemented.
This commit is contained in:
60
js/Camera.js
Normal file
60
js/Camera.js
Normal file
@@ -0,0 +1,60 @@
|
||||
import GeometryPoint from "./geometry/GeometryPoint.js";
|
||||
|
||||
export default class Camera
|
||||
{
|
||||
constructor(x = 0, y = 0, width = window.innerWidth, height = window.innerHeight)
|
||||
{
|
||||
this.position = new GeometryPoint(x, y);
|
||||
this.width = width;
|
||||
this.height = height;
|
||||
this.borderTop = 0;
|
||||
this.borderBottom = undefined;
|
||||
this.borderLeft = 0;
|
||||
this.borderRight = undefined;
|
||||
this.speedX = 0;
|
||||
this.speedY = 0;
|
||||
}
|
||||
|
||||
centerCamera(x, y)
|
||||
{
|
||||
this.position.x = x - this.width * 0.5;
|
||||
this.position.y = y - this.height * 0.5;
|
||||
|
||||
if (this.position.x < this.borderLeft) {
|
||||
this.position.x = this.borderLeft;
|
||||
} else if (this.borderRight !== undefined && this.position.x + this.width > this.borderRight) {
|
||||
this.position.x = this.borderRight - this.width;
|
||||
}
|
||||
|
||||
if (this.position.y < this.borderTop) {
|
||||
this.position.y = this.borderTop;
|
||||
} else if (this.borderBottom !== undefined && this.position.y + this.height > this.borderBottom) {
|
||||
this.position.y = this.borderBottom - this.height;
|
||||
}
|
||||
}
|
||||
|
||||
facePosition(x, y, delta, reactionSpeed = 1)
|
||||
{
|
||||
let positionX = x - this.width * 0.5;
|
||||
let positionY = y - this.height * 0.5;
|
||||
|
||||
let distanceX = this.position.x - positionX;
|
||||
let distanceY = this.position.y - positionY;
|
||||
|
||||
if (this.position.x !== positionX) {
|
||||
this.position.x += distanceX * delta * reactionSpeed;
|
||||
}
|
||||
|
||||
if (distanceX < 0.01) {
|
||||
this.position.x = positionX;
|
||||
}
|
||||
|
||||
if (this.position.y !== positionY) {
|
||||
this.position.y += distanceY * delta * reactionSpeed;
|
||||
}
|
||||
|
||||
if (distanceY < 0.01) {
|
||||
this.position.y = positionY;
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user