Javascript canvas
Javascript canvas
本文关键字:canvas Javascript 更新时间:2023-09-26
我一直在寻找一种方法来制作一个系统,其中摄像机/视口跟随玩家移动。正如你在小提琴上看到的,地图比画布和我想做的要大得多,这样玩家就会一直处于中心,除非靠近边缘。
玩家还没有移动。我想我需要将一些变量传递给 x 和 y 位置。
另外,如果您知道任何关于此的好教程,我将不胜感激。
请帮忙...
提前谢谢。
我的JS代码:
var canvas = document.getElementById("myCanvas");
if (canvas.getContext) {
var ctx = canvas.getContext("2d");
var width = 800;
var height = 700;
var level = [];
var level_1 = [
"bbggggggbbgggggggggggggggggg",
"gbggggggbbgggbbbbbbggggggggg",
"gbggggggbbgggbgggggggggggggg",
"gbbbbbbbbbbbbbgggggggggggggg",
"ggggggggggbggggggggggggggggg",
"ggggggggggbggggggggggggggggg",
"ggggggggggbggggggggggggggggg",
"ggggggggggbggggggggggggggggg",
"ggggggggggbggggggggggggggggg",
"ggggggggggbggggggggggggggggg",
"ggggggggggbggggggggggggggggg",
"ggggggggggbggggggggggggggggg"
];
var Ground = function(x, y, label) {
this.x = x;
this.y = y;
this.label = label;
this.draw = function() {
if(this.label == "g") {
ctx.fillStyle = 'rgb(0,255,0)';
ctx.fillRect(this.x, this.y, 15, 15);
}
if(this.label == "b") {
ctx.fillStyle = 'rgb(0,0,255)';
ctx.fillRect(this.x, this.y, 15, 15);
}
}
}
var Player = function(x, y) {
this.x = x;
this.y = y;
this.size = 10;
this.draw = function() {
ctx.fillStyle = 'rgb(0,0,0)';
ctx.fillRect(this.x, this.y, this.size, this.size);
}
this.move = function() {
// code for player to move
}
}
var makeLevel = function() {
for(var i = 0; i < level_1.length; i++) {
for(var j = 0; j < level_1[i].length; j++) {
switch(level_1[i][j]) {
case "g" :
level.push(new Ground(j*15, i*15, "g"));
break;
case "b" :
level.push(new Ground(j*15, i*15, "b"));
break;
}
}
}
}
makeLevel();
var player = new Player(5,20);
function draw() {
ctx.clearRect(0,0,800,700);
for(var i=0; i<level.length; i++) {
level[i].draw();
}
player.draw();
window.requestAnimationFrame(draw);
}
draw();
}
小提琴
您的相机/视口是您的画布大小。您需要记住,每个对象将有两个不同的位置。
- 地图位置
- 画布位置(如果它们是否在视口中)(如果它们不在视口中,则计算这一点没有意义)
在玩家始终处于中心的2D游戏中,您的"地图"就是移动的东西。在渲染场景之前,您需要执行以下操作:
- 更新任何动态对象映射位置
- 更新玩家地图位置
- 使用画布的尺寸定义表面积(又名最小和最大边界...应该是画布的 4 个角)在地图上对应于玩家的位置
- 获取该外围应用区域中的所有对象(静态/动态)(视区边界内的对象) 将其地图位置转换为画布位置
- (使用玩家的地图位置以及玩家的画布位置和画布尺寸)。
- 获得对象的所有画布位置后,渲染场景。
如果您有任何疑问,请随时发表评论。我可能不清楚某些部分。
相关文章:
- 加速我的复杂函数绘图仪(canvas+javascript)
- Html5 Canvas Javascript使我的网页链接没有响应
- 使用canvas+javascript进行2D碰撞检测
- 从 Canvas Javascript 获取图像
- HTML 5 canvas JavaScript rain animation(如何高效轻松地实现!).
- Canvas/JavaScript-鼠标单击时翻转正方形的颜色
- html and Svg to Canvas javascript
- Html5 Canvas Javascript libraries?
- 剪切倾斜线条canvas/Javascript
- 这是一款基于html5 canvas (javascript API)的开源游戏
- HTML-Canvas - javascript -动画/绘图
- Html5-canvas javascript绘制线与滑块
- 在HTML5 (canvas + JavaScript)中是否有类似的graphstream (Java) ?
- Facebook Canvas JavaScript链接不起作用
- ajax调用后重新加载canvas javascript
- Canvas JavaScript -检查圆形是否与pixeldata碰撞
- CORS issue with HTML5 canvas, javascript
- 隐藏鼠标光标,当它'在HTML5 Canvas Javascript
- html5 canvas - JavaScript-将鼠标X和Y位置存储在变量中,并在鼠标移动时不断更新它们
- 在canvas javascript上绘制10,000个对象