Actionscript 3 as3平铺游戏-如果角色跨过平铺,做些什么

Actionscript 3 as3平铺游戏-如果角色跨过平铺,做些什么,actionscript-3,tile,event-listener,Actionscript 3,Tile,Event Listener,所以我正在为学校做一个瓷砖游戏,对编程不是很熟悉,所以如果答案很明显,我深表歉意 使用一个数组我创建了一个具有不同分片的地图-我想要的是当角色走过某个数组时,会发生一些事情-例如:重新启动游戏 我的代码集于一身。作为文件: 包{ 导入flash.display.MovieClip; 导入flash.events.*; 公共类main2扩展了MovieClip{ 公共职能main2(){ //创建地图 var-mapWidth=10; var mapHeight=10; 瓦替利赛德=32; va

所以我正在为学校做一个瓷砖游戏,对编程不是很熟悉,所以如果答案很明显,我深表歉意

使用一个数组我创建了一个具有不同分片的地图-我想要的是当角色走过某个数组时,会发生一些事情-例如:重新启动游戏

我的代码集于一身。作为文件:

包{
导入flash.display.MovieClip;
导入flash.events.*;
公共类main2扩展了MovieClip{
公共职能main2(){
//创建地图
var-mapWidth=10;
var mapHeight=10;
瓦替利赛德=32;
var totalTiles=地图宽度*地图高度;
var myMap:Array=[
[1, 1, 1, 1, 1, 1, 1, 1, 1, 1],
[1, 0, 0, 0, 2, 0, 0, 0, 0, 1],
[1, 0, 0, 0, 0, 0, 0, 0, 0, 1],
[1, 0, 0, 0, 0, 0, 0, 0, 0, 0],
[1, 0, 0, 0, 0, 3, 0, 0, 0, 1],
[1, 0, 0, 0, 0, 0, 0, 0, 0, 1],
[1, 0, 0, 0, 0, 0, 0, 0, 0, 1],
[1, 0, 0, 0, 0, 0, 0, 0, 0, 1],
[1, 0, 0, 0, 0, 0, 0, 0, 0, 1],
[1, 1, 1, 1, 1, 1, 1, 1, 1, 1]
];
对于(变量i:int=0;i/左
}
}//运动函数
}//在这条线后面
}

}
将以下内容添加到您的代码中:

此函数返回指定磁贴的编号:

function getNumberAt(tileX:uint,tileY:uint){
    var value:uint=myMap[tileX][tyleY];
    return value
}
请注意,此函数的索引应从零开始(如果您希望在第一个水平方向和第二个垂直方向平铺,则应
getNumberAt(0,1)

现在替换您的函数:

  function movement(event: KeyboardEvent): void {
            if (event.keyCode == 40 && myMap[heroY + 1][heroX] != 1) {
                character.gfx.rotation = 0
                character.y += tileSide
                heroY++ //Down
            }
            if (event.keyCode == 38 && myMap[heroY - 1][heroX] != 1) {
                character.gfx.rotation = 180
                character.y -= tileSide
                heroY-- //Up
            }
            if (event.keyCode == 39 && myMap[heroY][heroX + 1] != 1) {
                character.gfx.rotation = 270
                character.x += tileSide
                heroX++ //Right
            }
            if (event.keyCode == 37 && myMap[heroY][heroX - 1] != 1) {
                character.gfx.rotation = 90
                character.x -= tileSide
                heroX-- //Left
            }
            trace(getNumberAt(heroX,heroY))//test getNumberAt function


            if(getNumberAt(heroX,heroY)==2){
                //type your code for death here
            }

        } 

I h☻这很有帮助!

将以下内容添加到代码中:

此函数返回指定磁贴的编号:

function getNumberAt(tileX:uint,tileY:uint){
    var value:uint=myMap[tileX][tyleY];
    return value
}
请注意,此函数的索引应从零开始(如果您希望在第一个水平方向和第二个垂直方向平铺,则应
getNumberAt(0,1)

现在替换您的函数:

  function movement(event: KeyboardEvent): void {
            if (event.keyCode == 40 && myMap[heroY + 1][heroX] != 1) {
                character.gfx.rotation = 0
                character.y += tileSide
                heroY++ //Down
            }
            if (event.keyCode == 38 && myMap[heroY - 1][heroX] != 1) {
                character.gfx.rotation = 180
                character.y -= tileSide
                heroY-- //Up
            }
            if (event.keyCode == 39 && myMap[heroY][heroX + 1] != 1) {
                character.gfx.rotation = 270
                character.x += tileSide
                heroX++ //Right
            }
            if (event.keyCode == 37 && myMap[heroY][heroX - 1] != 1) {
                character.gfx.rotation = 90
                character.x -= tileSide
                heroX-- //Left
            }
            trace(getNumberAt(heroX,heroY))//test getNumberAt function


            if(getNumberAt(heroX,heroY)==2){
                //type your code for death here
            }

        } 

I h☻p这很有帮助!

如果你接受这个答案和我以前的答案,请点击我文章左上角的勾号来接受。如果你接受这个答案和我以前的答案,请点击我文章左上角的勾号来接受。对不起,前面的问题。我似乎无法实现,我复制了密码对于单词减去打字错误(我认为这是一个打字错误,在第二行)在if语句中只是为了查看输出,但什么都没有。我很确定我只是没有正确地将其放入。您有什么见解吗?在这种情况下,请检查代码!使用跟踪来找出问题,问题是来自
getNumber
或其他地方。我编辑了代码。谢谢您,我使用了与y非常相似的另一种方法来解决它我们的方法减去了函数。我很感谢你的帮助啊哈,如果不是因为我缺乏技能,我相信你的答案会有效:)我很高兴我能帮助你:)函数
getnumberrat
无法工作,因为它将
myMap
视为一维数组
myMap
是一个二维数组。很抱歉前面的问题。我好像没法让它工作,我把代码一个字一个字地抄了下来,但没有输入错误(我想第二行是输入错误)。我在if语句中像trace(“hello”)一样编写代码只是为了查看输出,但什么都没有。我相当肯定我只是没有把它放对。你有什么见解吗?在这种情况下,请检查代码!使用trace查找问题,问题来自
getNumber
或其他地方。我编辑了代码。感谢您,我使用了另一种方法解决了问题,该方法与减去函数后的方法非常相似。感谢您的帮助啊哈,如果不是因为我缺乏技能,我相信您的答案会有效:)我很高兴能帮助您:)函数
getNumberAt
无法工作,因为它将
myMap
视为一维数组
myMap
是一个二维数组。