Cocos2d-x 如何获取tmx地图上的事件对象坐标

Cocos2d-x 如何获取tmx地图上的事件对象坐标,第1张

差不多吧!要TMX地图上的object 层 取它的值。在Lua写 然后封装起来。回答:你去百度这篇文章 里面是做塔防的 关于tilemap的使用也有详细的描述跟详细方法 虽然是针对cocos2d的 但是转成cocos2d-x也只是语法上的问题

NPC头上显示名字的脚本:(首先对楼上吐槽无力……)

# 使用方法:插入到main前即可,之后就会显示每个事件的名字。

# 不想显示名字的NPC直接把名字设置为一个空格就行了。

#

# 附加功能:名字颜色区分:比如一个NPC的名字是 小龙,2 就会用2号颜色(红色)显示

#

# 修改NPC名的方法:$game_mapevents[事件ID编号]name =

# 比如某个宝箱,原名宝箱,打开后名为“打开的宝箱”,则

# $game_mapevents[@event_id]name = "打开的宝箱" 或者

# $game_mapevents[2]name = "打开的宝箱" (假设宝箱是2号事件)

#

# 修改颜色定义:70-88行,131-149行,自己随便改。

#

# 给主角带上名字:192行,改 "" 为 "主角" 或者 $game_partyactors[0]name 即可

#

# 是否显示姓名的开关:157行,开头的井号去掉。则以后39号开关打开的时候才会显示姓名

#

#==============================================================================

# ■ Game_Event

#------------------------------------------------------------------------------

# 处理事件的类。条件判断、事件页的切换、并行处理、执行事件功能

# 在 Game_Map 类的内部使用。

#==============================================================================

class Game_Event < Game_Character

#——————————————————————————————————————

# 用来返回名称

#——————————————————————————————————————

def name

return @eventname

end

def name=(newname)

@eventname = newname

end

end

#==============================================================================

# ■ Sprite_Character

#------------------------------------------------------------------------------

# 角色显示用脚本。监视 Game_Character 类的实例、

# 自动变化脚本状态。

#==============================================================================

class Sprite_Character < RPG::Sprite

def dispose

super

@namespritedispose unless @namespritenil

end

#--------------------------------------------------------------------------

# ● 定义实例变量

#--------------------------------------------------------------------------

attr_accessor :character # 角色

#--------------------------------------------------------------------------

# ● 初始化对像

# viewport : 查看端口

# character : 角色 (Game_Character)

#--------------------------------------------------------------------------

def initialize(viewport, character = nil)

name = charactername

super(viewport)

@character = character

@namesprite = Spritenew

@namespritebitmap = Bitmapnew(160, 48)

@namespritebitmapfontname = "黑体"

@namespritebitmapfontsize = 15

@namespritebitmapfontcolorset( 30, 255, 0)

@evname = name

@evname_split = namesplit(/,/)[0]

if name[0, 2]=="EV"

@evname_split = " "

end

if namesplit(/,/)[1] != nil

case namesplit(/,/)[1]

when "0"

@namespritebitmapfontcolorset(255, 255, 255)

when "1"

@namespritebitmapfontcolorset(120, 120, 120)

when "2"

@namespritebitmapfontcolorset(255, 0, 0)

when "3"

@namespritebitmapfontcolorset( 30, 255, 0)

when "4"

@namespritebitmapfontcolorset( 0, 112, 221)

when "5"

@namespritebitmapfontcolorset(163, 53, 238)

when "6"

@namespritebitmapfontcolorset(247, 102, 0)

when "7"

@namespritebitmapfontcolorset(255, 210, 0)

else

@namespritebitmapfontcolorset(255, 255, 255)

end

end

if @evname_split != "" and @evname_split != nil

@namespritebitmapdraw_text(0, 0, 160, 36, @evname_split, 1)

end

update

end

#--------------------------------------------------------------------------

# ● 更新画面

#--------------------------------------------------------------------------

def update

super

# 元件 ID、文件名、色相与现在的情况存在差异的情况下

if @tile_id != @charactertile_id or

@character_name != @charactercharacter_name or

@character_hue != @charactercharacter_hue

# 记忆元件 ID 与文件名、色相

@tile_id = @charactertile_id

@character_name = @charactercharacter_name

@character_hue = @charactercharacter_hue

# 元件 ID 为有效值的情况下

if @tile_id >= 384

selfbitmap = RPG::Cachetile($game_maptileset_name,

@tile_id, @charactercharacter_hue)

selfsrc_rectset(0, 0, 32, 32)

selfox = 16

selfoy = 32

# 元件 ID 为无效值的情况下

else

selfbitmap = RPG::Cachecharacter(@charactercharacter_name,

@charactercharacter_hue)

@cw = bitmapwidth / 4

@ch = bitmapheight / 4

selfox = @cw / 2

selfoy = @ch

end

end

if @evname != @charactername

@namespritebitmapclear

@evname = @charactername

@evname_split = @characternamesplit(/,/)[0]

if @characternamesplit(/,/)[1] != nil

case @characternamesplit(/,/)[1]

when "0"

@namespritebitmapfontcolorset(255, 255, 255)

when "1"

@namespritebitmapfontcolorset(120, 120, 120)

when "2"

@namespritebitmapfontcolorset(255, 0, 0)

when "3"

@namespritebitmapfontcolorset( 30, 255, 0)

when "4"

@namespritebitmapfontcolorset( 0, 112, 221)

when "5"

@namespritebitmapfontcolorset(163, 53, 238)

when "6"

@namespritebitmapfontcolorset(255, 128, 0)

when "7"

@namespritebitmapfontcolorset(229, 204, 128)

else

@namespritebitmapfontcolorset(255, 255, 255)

end

end

if @evname_split != "" and @evname_split != nil

@namespritebitmapdraw_text(0, 0, 160, 36, @evname_split, 1)

end

end

@namespritex = selfx-80

@namespritey = selfy-selfoy-24

# @namespritevisible = $game_switches[1]

# 设置可视状态

selfvisible = (not @charactertransparent)

# 图形是角色的情况下

if @tile_id == 0

# 设置传送目标的矩形

sx = @characterpattern @cw

sy = (@characterdirection - 2) / 2 @ch

selfsrc_rectset(sx, sy, @cw, @ch)

end

# 设置脚本的坐标

selfx = @characterscreen_x

selfy = @characterscreen_y

selfz = @characterscreen_z(@ch)

# 设置不透明度、合成方式、茂密

selfopacity = @characteropacity

selfblend_type = @characterblend_type

selfbush_depth = @characterbush_depth

# 动画

if @characteranimation_id != 0

animation = $data_animations[@characteranimation_id]

animation(animation, true)

@characteranimation_id = 0

end

end

end

#==============================================================================

# ■ Game_Player

#------------------------------------------------------------------------------

# 处理主角的类。事件启动的判定、以及地图的滚动等功能。

# 本类的实例请参考 $game_player。

#==============================================================================

class Game_Player < Game_Character

def name

return $game_partyactors[0]name

end

end

步骤如下:

1新建Cocos2d-win32工程,工程名为"TileGame",去除"Box2D"选项,勾选"Simple Audio Engine in Cocos Denshion"选项;

2下载本游戏所需的资源,将资源放置"Resources"目录下;

3使用Tiled工具制作地图。首先,下载开源的Tiled Map Editor工具,当前版本为081,建议使用QT版本。在Tiled工具,点击菜单栏→"文件"→"新文件",在d出的对话框中,填入如下内容:

地图方向分为:正常、45度。地图大小填入的是tile单位。块大小是资源每个tile的实际像素大小,在本篇中,使用32x32大小。点击"确定"。

4接着,把所需要的tile集合加入到工具中。菜单栏→"地图"→"新图块",填入如下内容:

点击"浏览",选择"Resources"目录下的tmw_desert_spacingpng文件,会自动填充"名称"内容。块的宽高都为32像素。边距就是当前tile块开始计算实际像素时,应该跳过多少像素,宽高一样。间距就是两个tile块之间的像素距离,宽高一样。看看tmw_desert_spacingpng文件,可以看到每个tile块都1像素的黑色边框,这就是为什么要设置边距和间距为1像素。

点击"确定"。

5可以看到tile块出现在"图块"窗口中。现在可以开始画地图。点击菜单栏→"视图"→"显示网格",可以开启网格参照线。点击工具栏"图章刷",然后在"图块"窗口点选一个tile块,接着在地图中,点击放入你所想要的位置。

用工具栏"填充",把地图背景填充成同一个tile块,这里为沙漠背景。可以从"图块"窗口点选多个tile块,可按Ctrl键多选,这样可以一次性将多个tile块放入地图中。进行制作地图,确保至少有一对建筑在地图上,因为后面需要一些东西来做碰撞。一旦完成了地图的制作,双击"图层"窗口中的当前层"块层 1",重命名为"Background"。然后点击工具栏"保存",命名为"TileMaptmx",保存在"Resources"目录下。

6将Tile地图加入到场景中。在HelloWorldSceneh文件中,添加如下代码:

CC_SYNTHESIZE_RETAIN(cocos2d::CCTMXTiledMap, _tileMap, TileMap);

CC_SYNTHESIZE_RETAIN(cocos2d::CCTMXLayer, _background, Background);

在HelloWorldScenecpp文件中,构造函数添加如下:

HelloWorld::HelloWorld()

{

_tileMap = NULL;

_background = NULL;

}

初始化init函数,修改如下:

bool HelloWorld::init()

{

bool bRet = false;

do

{

CC_BREAK_IF(! CCLayer::init());

this->setTileMap(CCTMXTiledMap::create("TileMaptmx"));

this->setBackground(_tileMap->layerNamed("Background"));

this->addChild(_tileMap, -1);

bRet = true;

} while (0);

return bRet;

}

7编译运行,可以看到整个地图的左下角,

要让它成为一个游戏,还需要三件事:玩家、玩家初始点、移动视图以便能够看到玩家。

8Tiled支持两种类型层:tile层和对象层。对象层允许你在地图上可能发生事件的区域绘制矩形。比如:你可能需要一个怪物出生区域,或者一个一进入就会挂掉的区域。在这里,我们给玩家创建一个出生地。菜单栏→"图层"→"添加对象层",命名为"Objects",点击工具栏"插入对象",在地图上选择一个位置并点击它,这时会出现一个灰色的矩形框,右键选择"对象属性",名称填入"SpawnPoint",

按"确定"按钮。保存地图。

9在HelloWorldSceneh文件中,添加如下声明:

1

CC_SYNTHESIZE_RETAIN(cocos2d::CCSprite, _player, Player);

在HelloWorldScenecpp构造函数中,添加如下:

1

_player = NULL;

在init初始化函数,添加如下:

CCTMXObjectGroup objects = _tileMap->objectGroupNamed("Objects");

CCAssert(objects != NULL, "Objects' object group not found");

CCDictionary spawnPoint = objects->objectNamed("SpawnPoint");

CCAssert(spawnPoint != NULL, "SpawnPoint object not found");

int x = spawnPoint->valueForKey("x")->intValue();

int y = spawnPoint->valueForKey("y")->intValue();

this->setPlayer(CCSprite::create("Playerpng"));

_player->setPosition(ccp(x, y));

this->addChild(_player);

this->setViewpointCenter(_player->getPosition());

添加一个方法setViewpointCenter,代码如下:

void HelloWorld::setViewpointCenter(CCPoint position)

{

CCSize winSize = CCDirector::sharedDirector()->getWinSize();

int x = MAX(positionx, winSizewidth / 2);

int y = MAX(positiony, winSizeheight / 2);

x = MIN(x, (_tileMap->getMapSize()width _tileMap->getTileSize()width) - winSizewidth / 2);

y = MIN(y, (_tileMap->getMapSize()height _tileMap->getTileSize()height) - winSizeheight / 2);

CCPoint actualPosition = ccp(x, y);

CCPoint centerOfView = ccp(winSizewidth / 2, winSizeheight / 2);

CCPoint viewPoint = ccpSub(centerOfView, actualPosition);

this->setPosition(viewPoint);

}

用户传任何的坐标过来,但是有一些点不希望显示出来,比如,我们不想屏幕移出地图边界,那里只是一片空白。如图:

摄像机的中心若是小于winSizewidth/2或winSizeheight/2,部分的视图将会在屏幕之外。同样的,我们需要检查边界条件。到目前为止,我们一直把这个函数看作是设置摄像机中心的位置。但是,这并不是我们实际做的。实际做的是移动整个层。看下图:

想象一下,身处在一个巨大的世界中,我们能看到的区域是从0到winSizeheight/width的这部分。我们视野的中心是centerOfView,并且我们知道要让中心在哪儿(actualPosition)。所以要让我们视野的中心向上向右移动到actualPosition,我们只需要让地图相对的向下向左移动即可。这一步是通过actualPosition与centerOfView坐标相减得到的,然后把HelloWorld层的坐标设为这个结果。

10编译运行,可以看到忍者在屏幕中,

11接下来,让忍者可以移动。在HelloWorldScenecpp文件init函数中,添加如下代码:

1

this->setTouchEnabled(true);

开启触摸,然后重载registerWithTouchDispatcher函数,代码如下:

void HelloWorld::registerWithTouchDispatcher(void)

{

CCDirector::sharedDirector()->getTouchDispatcher()->addTargetedDelegate(this, 0, true);

}

注册触摸事件,这样单点触摸ccTouchBegan和ccTouchEnded会被调用。重载ccTouchBegan函数,代码如下:

bool HelloWorld::ccTouchBegan(CCTouch pTouch, CCEvent pEvent)

{

return true;

}

返回true表明接受这个触摸。添加setPlayerPosition方法,来设置玩家坐标,代码如下:

void HelloWorld::setPlayerPosition(CCPoint position)

{

_player->setPosition(position);

}

重载ccTouchEnded方法,代码如下:

void HelloWorld::ccTouchEnded(CCTouch pTouch, CCEvent pEvent)

{

CCPoint touchLocation = this->convertTouchToNodeSpace(pTouch);

CCPoint playerPos = _player->getPosition();

CCPoint diff = ccpSub(touchLocation, playerPos);

if (abs(diffx) > abs(diffy))

{

if (diffx > 0)

{

playerPosx += _tileMap->getTileSize()width;

}

else

{

playerPosx -= _tileMap->getTileSize()width;

}

}

else

{

if (diffy > 0)

{

playerPosy += _tileMap->getTileSize()height;

}

else

{

playerPosy -= _tileMap->getTileSize()height;

}

}

if (playerPosx <= (_tileMap->getMapSize()width _tileMap->getTileSize()width) &&

playerPosy <= (_tileMap->getMapSize()height _tileMap->getTileSize()height) &&

playerPosy >= 0 && playerPosx >= 0)

{

setPlayerPosition(playerPos);

}

setViewpointCenter(_player->getPosition());

}

计算触摸点与玩家坐标之间的差值,来决定玩家的移动方向。

12编译运行,点击屏幕,让忍者动起来,

1第一个问题:

在MAIN之前插入此脚本:

class Game_Map

def tileset_id

return @maptileset_id

end

end

class Sprite_Character < RPG::Sprite

#--------------------------------------------------------------------------

# ● 更新画面

#--------------------------------------------------------------------------

def update(opacity = 255) # 此参数为255时无效

super()

# 元件 ID、文件名、色相与现在的情况存在差异的情况下

if @tile_id != @charactertile_id or

@character_name != @charactercharacter_name or

@character_hue != @charactercharacter_hue

# 记忆元件 ID 与文件名、色相

@tile_id = @charactertile_id

@character_name = @charactercharacter_name

@character_hue = @charactercharacter_hue

# 元件 ID 为有效值的情况下

if @tile_id >= 384

selfbitmap = RPG::Cachetile($game_maptileset_name,

@tile_id, @charactercharacter_hue)

selfsrc_rectset(0, 0, 32, 32)

selfox = 16

selfoy = 32

# 元件 ID 为无效值的情况下

else

selfbitmap = RPG::Cachecharacter(@charactercharacter_name,

@charactercharacter_hue)

@cw = bitmapwidth / 4

@ch = bitmapheight / 4

selfox = @cw / 2

selfoy = @ch

end

end

# 设置可视状态

selfvisible = (not @charactertransparent)

# 图形是角色的情况下

if @tile_id == 0

# 设置传送目标的矩形

sx = @characterpattern @cw

sy = (@characterdirection - 2) / 2 @ch

selfsrc_rectset(sx, sy, @cw, @ch)

end

# 设置脚本的坐标

selfx = @characterscreen_x

selfy = @characterscreen_y

selfz = @characterscreen_z(@ch)

# 设置不透明度、合成方式、茂密

if opacity != 255

selfopacity = opacity

selfz = 999

else

selfopacity = @characteropacity

selfz = @characterscreen_z(@ch)

end

selfblend_type = @characterblend_type

selfbush_depth = @characterbush_depth

# 动画

if @characteranimation_id != 0

animation = $data_animations[@characteranimation_id]

animation(animation, true)

@characteranimation_id = 0

end

end

end

#==============================================================================

# ■ Spriteset_Map

#------------------------------------------------------------------------------

#处理地图画面活动块和元件的类。本类在

# Scene_Map 类的内部使用。

#==============================================================================

class Spriteset_Map

#--------------------------------------------------------------------------

# ● 初始化对像

#--------------------------------------------------------------------------

def initialize

# 生成显示端口

@viewport1 = Viewportnew(0, 0, 640, 480)

@viewport2 = Viewportnew(0, 0, 640, 480)

@viewport3 = Viewportnew(0, 0, 640, 480)

@viewport2z = 200

@viewport3z = 5000

# 生成元件地图

@tilemap = Tilemapnew(@viewport1)

@tilemaptileset = RPG::Cachetileset($game_maptileset_name)

for i in 06

autotile_name = $game_mapautotile_names[i]

@tilemapautotiles[i] = RPG::Cacheautotile(autotile_name)

end

@tilemapmap_data = $game_mapdata

@tilemappriorities = $game_mappriorities

# 生成远景平面

@panorama = Planenew(@viewport1)

@panoramaz = -1000

# 生成雾平面

@fog = Planenew(@viewport1)

@fogz = 3000

# 生成角色活动块

@character_sprites = []

@character_sprites1 = []

for i in $game_mapeventskeyssort

sprite = Sprite_Characternew(@viewport1, $game_mapevents[i])

sprite1 = Sprite_Characternew(@viewport1, $game_mapevents[i])

@character_spritespush(sprite)

@character_sprites1push(sprite1)

end

@character_spritespush(Sprite_Characternew(@viewport1, $game_player))

@character_sprites1push(Sprite_Characternew(@viewport1, $game_player))

for sprite in @character_sprites1

spriteopacity = 0

end

# 生成天气

@weather = RPG::Weathernew(@viewport1)

# 生成

@picture_sprites = []

for i in 150

@picture_spritespush(Sprite_Picturenew(@viewport2,

$game_screenpictures[i]))

end

# 生成计时器块

@timer_sprite = Sprite_Timernew

# 刷新画面

update

end

#--------------------------------------------------------------------------

# ● 释放

#--------------------------------------------------------------------------

def dispose

# 释放元件地图

@tilemaptilesetdispose

for i in 06

@tilemapautotiles[i]dispose

end

@tilemapdispose

# 释放远景平面

@panoramadispose

# 释放雾平面

@fogdispose

# 释放角色活动块

for sprite in @character_sprites and @character_sprites1

spritedispose

end

# 释放天候

@weatherdispose

# 释放

for sprite in @picture_sprites

spritedispose

end

# 释放计时器块

@timer_spritedispose

# 释放显示端口

@viewport1dispose

@viewport2dispose

@viewport3dispose

end

#--------------------------------------------------------------------------

# ● 刷新画面

#--------------------------------------------------------------------------

def update

# 远景与现在的情况有差异发情况下

if @panorama_name != $game_mappanorama_name or

@panorama_hue != $game_mappanorama_hue

@panorama_name = $game_mappanorama_name

@panorama_hue = $game_mappanorama_hue

if @panoramabitmap != nil

@panoramabitmapdispose

@panoramabitmap = nil

end

if @panorama_name != ""

@panoramabitmap = RPG::Cachepanorama(@panorama_name, @panorama_hue)

end

Graphicsframe_reset

end

# 雾与现在的情况有差异的情况下

if @fog_name != $game_mapfog_name or @fog_hue != $game_mapfog_hue

@fog_name = $game_mapfog_name

@fog_hue = $game_mapfog_hue

if @fogbitmap != nil

@fogbitmapdispose

@fogbitmap = nil

end

if @fog_name != ""

@fogbitmap = RPG::Cachefog(@fog_name, @fog_hue)

end

Graphicsframe_reset

end

# 刷新元件地图

@tilemapox = $game_mapdisplay_x / 4

@tilemapoy = $game_mapdisplay_y / 4

@tilemapupdate

# 刷新远景平面

@panoramaox = $game_mapdisplay_x / 8

@panoramaoy = $game_mapdisplay_y / 8

# 刷新雾平面

@fogzoom_x = $game_mapfog_zoom / 1000

@fogzoom_y = $game_mapfog_zoom / 1000

@fogopacity = $game_mapfog_opacity

@fogblend_type = $game_mapfog_blend_type

@fogox = $game_mapdisplay_x / 4 + $game_mapfog_ox

@fogoy = $game_mapdisplay_y / 4 + $game_mapfog_oy

@fogtone = $game_mapfog_tone

# 刷新角色活动块

for i in 0@character_spritessize

sprite = @character_sprites[i]

sprite1 = @character_sprites1[i]

# 定义实例变量设置地图元件信息

tileset = $data_tilesets[$game_maptileset_id]

for j in 02

if $game_mapdata[spritecharacterx, spritecharactery, j] != 0 and

tilesetpriorities[$game_mapdata[spritecharacterx, spritecharactery, j]] >= 1

spriteupdate

sprite1update(100)

break

else

spriteupdate

sprite1update(0)

end

end

end

# 刷新天候图形

@weathertype = $game_screenweather_type

@weathermax = $game_screenweather_max

@weatherox = $game_mapdisplay_x / 4

@weatheroy = $game_mapdisplay_y / 4

@weatherupdate

# 刷新

for sprite in @picture_sprites

spriteupdate

end

# 刷新计时器块

@timer_spriteupdate

# 设置画面的色调与震动位置

@viewport1tone = $game_screentone

@viewport1ox = $game_screenshake

# 设置画面的闪烁色

@viewport3color = $game_screenflash_color

# 刷新显示端口

@viewport1update

@viewport3update

end

end

这个脚本还是有一些问题的,在地图绘制第三层时会不透明,这时你最好是用事件来做,把行走图的透明度改为150左右就可以了

2第二个问题:在MAIN之前插入此脚本即可:

module RPG

X = 0

Y = 0

Text = "你要显示的内容"

end

class Scene_Menu

alias :old_main :main unless method_defined("old_main")

def main

@text_window = Window_Basenew(RPG::X, RPG::Y, 160, 64)

@text_windowcontents = Bitmapnew(160 - 32, 64 - 32)

@text_windowcontentsclear

@text_windowcontentsdraw_text(0, 0, 128, 32, RPG::Text)

old_main

end

end

同样此脚本也是存在问题,你在退出菜单时窗口依然会留在地图上,解决方法:

参考其他脚本自己修改

3第三个问题:找到Scene_Title在s3 = "退出"的下面加上 s4 = "你的内容"

再把下面的脚本@command_window = Window_Commandnew(192, [s1, s2, s3])

加上s4,

再看下面:在when 1 # 继续

command_continue

下面加入 when 2 # 你的内容

command_sssss # 这个是随便给的就用这个sssss吧~!

复制下面脚本中的新游戏所有内容插入脚本在继续之下并且改为:

#--------------------------------------------------------------------------

# ● 命令 : 新游戏

#--------------------------------------------------------------------------

def command_sssss # 你之前给的

# 演奏确定 SE

$game_systemse_play($data_systemdecision_se)

# 停止 BGM

Audiobgm_stop

# 重置测量游戏时间用的画面计数器

Graphicsframe_count = 0

# 生成各种游戏对像

$game_temp = Game_Tempnew

$game_system = Game_Systemnew

$game_switches = Game_Switchesnew

$game_variables = Game_Variablesnew

$game_self_switches = Game_SelfSwitchesnew

$game_screen = Game_Screennew

$game_actors = Game_Actorsnew

$game_party = Game_Partynew

$game_troop = Game_Troopnew

$game_map = Game_Mapnew

$game_player = Game_Playernew

# 设置初期同伴位置

$game_partysetup_starting_members

# 设置初期位置的地图

$game_mapsetup(1) # 地图的ID

# 主角向初期位置移动

$game_playermoveto(1, 1) # X Y坐标均为1的格子

# 刷新主角

$game_playerrefresh

# 执行地图设置的 BGM 与 BGS 的自动切换

$game_mapautoplay

# 刷新地图 (执行并行事件)

$game_mapupdate

# 切换地图画面

$scene = Scene_Mapnew

end

这样就可以了,然后再在地图1里制作事件

4和5俩个问题我一起答了吧!

标签就好比书签,就是记录一下 标签跳转是调用你之前记录的内容

比如:显示文章:

这个问题很简单!

标签

………………

(其他的事件)

标签跳转

这样测试时执行到标签跳转这是会调用你之前记录的内容就是会出现这个问题很简单!这句话,和公共事件类似

独立开关是事件中独立的开关,它只有开和关但制作事件时往往用它来结束事件

自动执行事件必然会用独立开关来结束事件,你不要去想这个具体是什么,你可以这样理解,这个就是使事件停止执行

6第6个问题:

制作过程失败?如果你没有在其他游戏上直接改那么应该是,你改了原Game的名称以及图标,

你又说什么机器容量够我有点不太懂你的意思?

应该是游戏中会"d出脚本已经被备份"之后退出吧!

这个是因为10秒内没有执行一次Graphicsupdate,一般是因为机器的内存不足

但为什么还会显示这个,

原因如下:

在你改脚本的时候是不是删除或#掉了Graphicsupdate所以会这样

我在补充一下,你不悬赏(至少也要150吧~!这样人会多些)即使高手看到了也未必会回答你的问题,我是闲的没事干 才给你说的

以上就是关于Cocos2d-x 如何获取tmx地图上的事件对象坐标全部的内容,包括:Cocos2d-x 如何获取tmx地图上的事件对象坐标、rpg maker xp 显示npc名字脚本、如何制作一个基于Tile的游戏 Cocos2d-x 2.0.4等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/web/9327941.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-04-27
下一篇 2023-04-27

发表评论

登录后才能评论

评论列表(0条)

保存