LayaAir引擎——(七)

LayaAir引擎——人物控制TiledMap地图移动和墙壁检测

所需要的软件:

LayaAir IDE 1.0.2版本

TiledMap

所需要的东西:

地图:53 * 32,(48*48)

人物:48*48

注意:

var a = pass.getTileDataByScreenPos(player.x,player.y - 48);//返回图块在图块集纹理上的索引+1

562//实际上索引是561,判断地图上的格子是否是561,如果是,不可以通行,则反之。

var Sprite    = Laya.Sprite;
var Stage     = Laya.Stage;
var MapLayer  = Laya.MapLayer;
var TiledMap  = Laya.TiledMap;
var Point     = Laya.Point;
var Rectangle = Laya.Rectangle;
var Handler   = Laya.Handler;
var WebGL     = Laya.WebGL;

Laya.init(624, 576);

var map1 = new TiledMap();
map1.createMap("map/map1/town1.json",new Rectangle(0,0,624,576),Handler.create(this,onMapLoaded));
var pass;

var player;
var mX = 0;
var mY = 0;

function onMapLoaded() {
    pass = map1.getLayerByName("pass");

    player = new Sprite();
    player.loadImage("map/player/player.png",0,0,48,48);
    Laya.stage.addChild(player);

    Laya.stage.on(laya.events.Event.KEY_DOWN,this,onkeydown);
}

function onkeydown(e) {
    switch (e.keyCode) {
        case 38:{
            var a = pass.getTileDataByScreenPos(player.x,player.y - 48);
            if(a != 562){
	            if(mY  > 0 ){
                    if (player.y > 288) {
                        player.y -= 48;
                    }else{
                         mY -= 48;
                 	    map1.moveViewPort(mX,mY);
                    }

	            }else{
                    if (player.y > 0) {
                        player.y -= 48;
                    }
                }
            }
            break;
        }
        case 40:{
            var a = pass.getTileDataByScreenPos(player.x,player.y + 48);
            if(a != 562){
                if (player.y > 144) {
                    if (mY < 960) {
                        mY += 48;
                        map1.moveViewPort(mX,mY);
                    }else{
                        if (player.y < 528) {
                            player.y += 48;
                        }
                    }
                }else{
                    player.y += 48;
                }
            }
            break;
        }
        case 37:{
            var a = pass.getTileDataByScreenPos(player.x - 48,player.y);
            if(a != 562){
               if(player.x > 288){
                   player.x -= 48;
               }else{
                   if (mX > 0) {
                        mX -= 48;
                       map1.moveViewPort(mX,mY);
                   }else{
                       if (player.x > 0) {
                           player.x -= 48;
                       }
                   }
               }
            }
            break;
        }
        case 39:{
            var a = pass.getTileDataByScreenPos(player.x + 48,player.y);
            if(a != 562){
                if (player.x > 288) {
                    if (mX > 1872) {
                        if (player.x < 576) {
                            player.x += 48;
                        }
                    }else{
                        mX += 48;
                        map1.moveViewPort(mX,mY);
                    }
                }else{
                    player.x += 48;
                }
            }
            break;
        }
        default:
            break;
    }
}

  

时间: 2024-10-17 01:03:47

LayaAir引擎——(七)的相关文章

LayaAir引擎——(六)

LayaAir引擎——TiledMap地图图块属性获取和进行墙壁碰撞检测 需要的软件: TiledMap LayaAir IDE 1.0.2版本 所画的地图: pass层: floor层: pass层格子属性: 白色格子: id:48,自定义属性 isCanPass:true 黑色格子:id:44,自定义属性 isCanPass:false floor层格子属性 五芒星格子:id:0 石头格子:id:27 矿车格子:id:22 1.前提代码 Laya.init(576, 576); var pl

LayaAir引擎——(二)

LayaAir引擎 -> 工具 -> 图集打包例子

LayaAir引擎——(一)

LayaAir是LayaBox推出的Html5游戏引擎,支持 ActionScript3.TypeScript.JavaScript,开源,并且商用免费. LayaAir IDE 是一款使用LayaAir 引擎来开发应用,游戏的集成开发环境. LayaAir IDE 下载地址: http://pan.baidu.com/s/1i5yKPpV; 新建项目: 项目名称:Test 项目路径:C:\Users\FanXiaying\Documents\LayaProject\Test 项目语言:Java

layaAir引擎制作游戏的图集动画、时间轴动画、和骨骼动画总结二

一.角色序列帧.ani动画的制作 1.在项目管理器中创建动画文件 2.创建动画模板,编辑动效名称 3.编辑序列帧动画 .ani格式动画的代码控制 1.动画加载loadAnmition() 2.播放与停止.动效模板切换 3.动画帧位置控制 4.动画播放完成事件 uui截图: Laya.init(1334, 750); Laya.loader.load(["res/comp.atlas","res/role.atlas"],Laya.Handler.create(thi

LayaAir引擎——(三)

LyaAir引擎(JavaScript)实现图片的翻转一半 图片4.png位于bin/开场过渡 文件夹下,图片大小150*30(根据实际情况做调整) var button; var scale1 = 1; button = new laya.display.Sprite() button.pos(100,100); button.pivot(75,15); button.loadImage("开场过渡/4.png"); Laya.stage.addChild(button); //实现

LayaAir引擎——(十一)

var c = new Array(); var d = new Array(); var e = new Array(); var f = new Array(); var g = new Array(); var zzjmCursor = 0; function zzjminit() { zzjminitName(); zzjminitRectChoose(); zzjminitRectChoosePic(); zzjmSetVisible(0); zzjminitZhongZuShuoMi

LayaAir引擎——(十)

var k = new Array(); var l = new Array(); var m = new Array(); var zhiyeCurosr = 0; function zyinit() { zyinitName(); zyinitRectChoose(); zyinitRectChoosePic(); zyinitZhiyeIntro(); zySetVisible(0); Laya.stage.on(laya.events.Event.KEY_DOWN,this,zyOnKe

LayaAir引擎——(八)

var a = new Array(); var b = new Array(); var ksjmCursor = 0; function ksjminit() { ksjminitName(); ksjminitRectChoose(); ksjminitRectChoosePic(); ksjmsetVisible(0); Laya.stage.on(laya.events.Event.KEY_DOWN, this, ksjmOnKeyDown); } function ksjminitN

LayaAir引擎——(九)

var h = new Array(); var j = new Array(); var xbCursor = 0; function xbinit() { xbinitName(); xbRectChoose(); xbRectChoosePic(); xbSetVisible(0); Laya.stage.on(laya.events.Event.KEY_DOWN,this,xbOnkeyDown); } function xbinitName() { var d1 = new laya.