html5地图边界,当玩家到达边界时如何使RPG地图延伸? Javascript HTML5

我努力在谷歌上找到我的问题的答案,所以想到了id帖子.

我正在使用html5,javascript和jquery构建一个自上而下的基于tile的RPG游戏.

我已在阵列中设置图像.我已经在一个数组中设置了我的地图,只是循环遍历它以显示屏幕上的图块.

我希望在画布上显示大地图的750px x 600px部分,当玩家移动到4个边界中的一个时,地图将更新并显示地图的下一部分,或者如果没有地图可用则保持不变.

我该如何实现?

如果你不明白我要求生病的尝试更好地解释:p但是我的代码:

$(document).ready(function(){

var canvas = $("#TBG");

var context = canvas.get(0).getContext("2d");

var canvasWidth = canvas.width();

var canvasHeight = canvas.height();

//Player Controls -------------------------------------------------------------------------

$(window).keydown(function(e){

var keyCode = e.keyCode;

if (keyCode == arrowRight){

Player.moveRight = true;

}

else if (keyCode == arrowLeft){

Player.moveLeft = true;

}

else if (keyCode == arrowUp){

Player.moveUp = true;

}

else if (keyCode == arrowDown) {

Player.moveDown = true;

}

});

$(window).keyup(function(e){

var keyCode = e.keyCode;

if (keyCode == arrowRight){

Player.moveRight = false;

}

else if (keyCode == arrowLeft){

Player.moveLeft = false;

}

else if (keyCode == arrowUp){

Player.moveUp = false;

}

else if (keyCode == arrowDown) {

Player.moveDown = false;

}

});

function player() {

this.x = 100;

this.y = 100;

this.vX = 0;

this.vY = 0;

var moveRight = false;

var moveLeft = false;

var moveUp = false;

var moveDown = false;

}

var Player = new player();

var arrowLeft = 37;

var arrowUp = 38;

var arrowRight = 39;

var arrowDown = 40;

//End Player controls ------------------------------------------------------------------------------

//Map initialisation -------------------------------------------------------------------------------------

var images = new Array(3);

images[0] = new Image();

images[0].src = "images/player.png";

images[1] = new Image();

images[1].src = "images/wall.png";

images[2] = new Image();

images[2].src = "images/grass.png";

images[3] = new Image();

images[3].src = "images/floor.png";

var tileMap = [

[3,1,3,3,3,3,3,3,3,3],

[3,1,1,2,2,2,2,2,2,3],

[3,1,1,1,2,2,2,2,2,3],

[3,2,1,1,1,2,2,2,2,3],

[3,2,2,1,1,1,2,2,2,3],

[3,2,2,2,1,1,1,1,1,3],

[3,2,2,2,2,1,1,1,1,3],

[3,2,2,2,2,1,1,1,1,3],

[3,2,2,2,2,1,1,1,1,3],

[3,3,3,3,3,3,3,3,3,3]

];

//Animate Loop -------------------------------------------------------------------------------------------

function animate () {

context.clearRect(0,0,canvasWidth,canvasHeight);

Player.vX = 0;

Player.vY = 0;

//Player Animation

if (Player.moveRight) {

Player.vX =2;

};

if (Player.moveUp) {

Player.vY = -2;

};

if (Player.moveDown) {

Player.vY = 2;

};

if (Player.moveLeft) {

Player.vX = -2;

};

Player.x += Player.vX;

Player.y += Player.vY;

if (Player.x < 0){

Player.x = 0;

Player.vX *= -2;

}

else if (Player.x + 64 > canvasWidth) {

Player.x = canvasWidth - 64;

Player.vX *= -2;

};

if (Player.y < 0){

Player.y = 0;

Player.vY *= -2;

}

else if (Player.y + 64 > canvasHeight) {

Player.y = canvasWidth - 64;

Player.vY *= -2;

};

for (var i = 0; i < 10; i++) {

for (var j = 0; j < 10; j++){

var tileId = tileMap[i][j];

var tileWidth = 32;

var tileHeight = 32;

context.drawImage(images[tileId],i * tileWidth, j * tileHeight);

}

}

context.drawImage(images[0], Player.x, Player.y);

setTimeout(animate, 0);

}

// End Loop ------------------------------------------------------------------------------------------------

animate();

});

我不是很喜欢Javascript,但学习和了解编程的舒适程度.

提前致谢

汤姆

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值